+1 vote
by (160 points)

What are the main advantages of Rebex.Mail and secure mail over the .Net native classes? I'm looking to provide infrastrucutre support to send mail and am interested to know if there are certain use cases which Rebex caters for and which the .net libraries cannot.

Applies to: Rebex Secure Mail

1 Answer

+1 vote
by (145k points)
Best answer

Rebex (Secure) Mail has the following major advantages over its .NET core library equivalent:

  • Mail messages can be saved to or loaded from a MIME format files (.eml) or Outlook .msg files. This has many benefits - for example, you can easily keep a copy of each sent message, pre-generate a batch of messages to be sent later, or create a template message (even using a third-party application such as Outlook) that can be loaded, processed and sent when needed.
  • S/MIME support (in Rebex Secure Mail), making it possible to use X509 certificate to sign/verify and encrypt/decrypt mail messages.
  • IMAP support
  • POP3 support
  • Low-level MIME API that provides even higher control over message structure and creation.

The Smtp class itself provides more control over the SMTP communication than .NET native classes and adds some missing features:

  • You can specify what to do when a single recipient out of many is rejected by the server - .NET core libraries always fail when a single recipient is rejected. With our Smtp object, you can write a custom event handler for this.
  • Support for both implicit and explicit SMTP/SSL (.NET core libraries only supported explicit SSL the last time I checked)
  • Support for SMTP protocol extensions such as pipelining, chunking, 8bit MIME and message size declaration. It is possible that some of these are also supported by .NET core libraries, but this doesn't seem to be sufficiently documented (with our SMTP class, you can easily specify which extensions to use).
  • Possibility to specify the conditions under which the SMTP server should generate and send delivery-status-notification messages.
  • Ability to execute arbitrary SMTP protocol commands.
  • It is easily possible to set the domain name announced by the SMTP client (.NET native classes lacked this option until recently and even now it has to be hard-coded into a config file, which is far from perfect).
  • Easy way of logging SMTP communication, which is very useful when you run into any problems.
  • It is possible to specify the SMTP-protocol-level sender and recipient addresses to be different from those actually present in the message being sent.
  • Ability to tunnel SMTP through SSH (with cooperation from Rebex SFTP or Rebex SSH Shell). This also works for IMAP and POP3, of course.

And, last but not least, we are more flexible when our customers need to add a missing feature, a workaround for badly-behaved SMTP servers or when a bug is found in our component.

by (160 points)
Thanks for the comprehensive answer. I don't know if theres a reason why you cant but having information like this and for other Rebex components on the main site would, imo, be a great benefit to you and your perspective customers.
by (145k points)
Yes, I think you are right. We are going to redesign the component pages soon, so hopefully something like this will be added to make it easier to find.