Gets or sets the associating digital certificate for digital signature and encryption (S/MIME).
[Visual Basic] Public Property Certificate2 As X509Certificate2
[C#] public X509Certificate2 Certificate2 {get; set;}
[C++] public: __property X509Certificate2^ get_Certificate2(); public: __property void set_Certificate2(X509Certificate2^);
[JScript] public function get Certificate2() : X509Certificate2; public function set Certificate2(X509Certificate2);
Property Value
Remarks
RSASSA-PSS Signature and RSA-OAEP Encryption
If you need to use RSASSA-PSS signature scheme, you need a special version of EASendMail, please have a look at this topic:
RSASSA-PSS + RSA-OAEP Encryption with SHA256
Example
[Visual Basic, C#] The following example demonstrates how to load certificate to sign email content with EASendMail SMTP Component. To get the full samples of EASendMail, please refer to Samples section.
[VB - Sign Email with Certificate] Imports EASendMail Imports System.Security.Cryptography.X509Certificates Private Function _findCertificate(storeName As String, emailAddress As String) As X509Certificate2 Dim cert As X509Certificate2 = Nothing Dim store As New X509Store(storeName, StoreLocation.CurrentUser) store.Open(OpenFlags.ReadOnly) Dim certfiicates As X509Certificate2Collection = store.Certificates.Find(X509FindType.FindBySubjectName, emailAddress, True) If certfiicates.Count > 0 Then cert = certfiicates(0) End If store.Close() _findCertificate = cert End Function Try Dim oMail As SmtpMail = New SmtpMail("TryIt") oMail.From = New MailAddress("test@emailarchitect.net") Dim signerCertificate As X509Certificate2 = _findCertificate("My", oMail.From.Address) If signerCertificate Is Nothing Then Throw New Exception("No signer certificate found for " + oMail.From.Address + "!") End If oMail.From.Certificate2 = signerCertificate ' You can also load the signer certificate from a pfx file. ' ' Dim pfxPath As String = "D:\TestCerts\signer.pfx" ' Dim signerCertFromPfx As X509Certificate2 = New X509Certificate2(pfxPath, ' "nosecret", ' X509KeyStorageFlags.Exportable Or X509KeyStorageFlags.UserKeySet) ' oMail.From.Certificate2 = signerCertFromPfx ' If you use it in web application, ' please use X509KeyStorageFlags.Exportable Or X509KeyStorageFlags.MachineKeySet ' If you use it in .NET core application ' please use X509KeyStorageFlags.Exportable Or X509KeyStorageFlags.EphemeralKeySet Catch exp As Exception Console.WriteLine("No sign certificate found for sender email: {0}", exp.Message) End Try
[C# - Sign Email with Certificate] using System.Security.Cryptography.X509Certificates; using EASendMail; X509Certificate2 _findCertificate(string storeName, string emailAddress) { X509Certificate2 cert = null; X509Store store = new X509Store(storeName, StoreLocation.CurrentUser); store.Open(OpenFlags.ReadOnly); X509Certificate2Collection certfiicates = store.Certificates.Find(X509FindType.FindBySubjectName, emailAddress, true); if (certfiicates.Count > 0) { cert = certfiicates[0]; } store.Close(); return cert; } try { SmtpMail oMail = new SmtpMail("TryIt"); oMail.From = "test@adminsystem.com"; X509Certificate2 signerCertificate = _findCertificate("My", oMail.From.Address); if (signerCertificate == null) throw new Exception("No signer certificate found for " + oMail.From.Address + "!"); oMail.From.Certificate2 = signerCertificate; // You can also load the signer certificate from a pfx file. /* string pfxPath = "D:\\TestCerts\\signer.pfx"; X509Certificate2 signerCertFromPfx = new X509Certificate2(pfxPath, "nosecret", X509KeyStorageFlags.Exportable | X509KeyStorageFlags.UserKeySet); oMail.From.Certificate2 = signerCertFromPfx; */ // If you use it in web application, // please use X509KeyStorageFlags.Exportable | X509KeyStorageFlags.MachineKeySet // If you use it in .NET core application // please use X509KeyStorageFlags.Exportable | X509KeyStorageFlags.EphemeralKeySet } catch (Exception exp) { Console.WriteLine("No sign certificate found {0}", exp.Message); }
[VB - Encrypt Email] Imports EASendMail Imports System.Security.Cryptography.X509Certificates Private Function _findCertificate(storeName As String, emailAddress As String) As X509Certificate2 Dim cert As X509Certificate2 = Nothing Dim store As New X509Store(storeName, StoreLocation.CurrentUser) store.Open(OpenFlags.ReadOnly) Dim certfiicates As X509Certificate2Collection = store.Certificates.Find(X509FindType.FindBySubjectName, emailAddress, True) If certfiicates.Count > 0 Then cert = certfiicates(0) End If store.Close() _findCertificate = cert End Function Dim oMail As SmtpMail = New SmtpMail("TryIt") oMail.From = New MailAddress("test@adminsystem.com") oMail.To = New AddressCollection("encrypt1@adminsystem.com, encrypt2@adminsystem.com") For i As Integer = 0 To oMail.[To].Count - 1 Dim oAddress As MailAddress = oMail.[To](i) Dim encryptCert As X509Certificate2 = _findCertificate("AddressBook", oAddress.Address) If encryptCert Is Nothing Then encryptCert = _findCertificate("My", oAddress.Address) End If If encryptCert Is Nothing Then Throw New Exception("No encryption certificate found for " + oAddress.Address + "!") End If oAddress.Certificate2 = encryptCert ' You can also load the encryptor certificate from a cer file Like this ' Dim cerPath As String = "D:\TestCerts\encryptor.cer" ' Dim encryptCertFromFile = New X509Certificate2(cerPath) ' oAddress.Certificate2 = encryptCertFromFile Next
[C# - Encrypt Email] using System.Security.Cryptography.X509Certificates; using EASendMail; X509Certificate2 _findCertificate(string storeName, string emailAddress) { X509Certificate2 cert = null; X509Store store = new X509Store(storeName, StoreLocation.CurrentUser); store.Open(OpenFlags.ReadOnly); X509Certificate2Collection certfiicates = store.Certificates.Find(X509FindType.FindBySubjectName, emailAddress, true); if (certfiicates.Count > 0) { cert = certfiicates[0]; } store.Close(); return cert; } SmtpMail oMail = new SmtpMail("TryIt"); oMail.From = "test@adminsystem.com"; oMail.To = "encrypt1@adminsystem.com, encrypt2@adminsystem.com"; for (int i = 0; i < oMail.To.Count; i++) { MailAddress oAddress = oMail.To[i]; X509Certificate2 encryptCert = _findCertificate("AddressBook", oAddress.Address); if (encryptCert == null) encryptCert = _findCertificate("My", oAddress.Address); if (encryptCert == null) throw new Exception("No encryption certificate found for " + oAddress.Address + "!"); oAddress.Certificate2 = encryptCert; // You can also load the encryptor certificate from a cer file like this /* string cerPath = "D:\\TestCerts\\encryptor.cer"; X509Certificate2 encryptCertFromFile = new X509Certificate2(cerPath); oAddress.Certificate2 = encryptCertFromFile; */ }
See Also
From, ReplyTo, Sender and Return-Path
SmtpMail.From Property
SmtpMail.ReplyTo Property
SmtpMail.Sender Property
SmtpMail.ReturnPath Property
SmtpMail.To Property
SmtpMail.Cc Property
SmtpMail.Bcc Property
Online Examples
Sign Email - VB
Encrypt Email - VB
Sign Email - C#
Encrypt Email - C#
Sign Email - C++/CLI
Encrypt Email - C++/CLI