Finds the certificate in Certificate Storage by subject.
[Visual Basic] Public Sub FindSubject( _ findKey As String, _ storeLocation As Certificate.CertificateStoreLocation, _ storeName As String _ )
[C#] public void FindSubject( string findKey, Certificate.CertificateStoreLocation storeLocation, string storeName );
[C++] public: void FindSubject( String^ findKey, Certificate.CertificateStoreLocation^ storeLocation, String^ storeName );
[JScript] public function FindSubject( findKey : String, keyLocation : Certificate.CertificateStoreLocation, storeName : String );
Parameters
Store Location | Description |
Certificate.CertificateStoreLocation.CERT_SYSTEM_STORE_CURRENT_USER | Current user certificates store |
Certificate.CertificateStoreLocation.CERT_SYSTEM_STORE_LOCAL_MACHINE | Local machine certificates store |
Certificate.CertificateStoreLocation.CERT_SYSTEM_STORE_CURRENT_SERVICE | Current service certificate store |
Certificate.CertificateStoreLocation.CERT_SYSTEM_STORE_SERVICES | System services certiciate store |
Certificate.CertificateStoreLocation.CERT_STORE_PROV_LDAP_STORE | Search certificate in Windows Domain Active Directory by LDAP protocol |
Remarks
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] Try Dim oMail As SmtpMail = New SmtpMail("TryIt") oMail.From = New MailAddress("test@emailarchitect.net") ' Find certificate by email adddress in My Personal Store. ' The certificate can be imported by *.pfx file like this: ' oMail.From.Certificate.Load("c:\test.pfx", "pfxpassword", Certificate.CertificateKeyLocation.CRYPT_USER_KEYSET) ' Once the certificate is loaded to From, the email content will be signed automatically oMail.From.Certificate.FindSubject(oMail.From.Address, Certificate.CertificateStoreLocation.CERT_SYSTEM_STORE_CURRENT_USER, "My") Catch exp As Exception Console.WriteLine("No sign certificate found for sender email: {0}", exp.Message) End Try
[C# - Sign Email with Certificate] try { SmtpMail oMail = new SmtpMail("TryIt"); oMail.From = "test@adminsystem.com"; // Find certificate by email adddress in My Personal Store. // The certificate can be also imported by *.pfx file like this: // oMail.From.Certificate.Load("c:\\test.pfx", "pfxpassword", Certificate.CertificateKeyLocation.CRYPT_USER_KEYSET); // Once the certificate is loaded to From, the email content will be signed automatically oMail.From.Certificate.FindSubject(oMail.From.Address, Certificate.CertificateStoreLocation.CERT_SYSTEM_STORE_CURRENT_USER, "My"); } catch (Exception exp) { Console.WriteLine("No sign certificate found {0}", exp.Message); }
[VB - Encrypt Email] 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 recipient As MailAddress = oMail.To(i) Try ' Find certificate by email adddress in My Other Peoples Store. ' The certificate can be imported by *.cer file like this: ' recipient.Certificate.Load("c:\encrypt1.cer") ' Once the certificate Is loaded to MailAddress, the email content will be encrypted automatically recipient.Certificate.FindSubject(recipient.Address, Certificate.CertificateStoreLocation.CERT_SYSTEM_STORE_CURRENT_USER, "AddressBook") Catch Try ' No certificate found in AddressBook, lookup it in My recipient.Certificate.FindSubject(recipient.Address, Certificate.CertificateStoreLocation.CERT_SYSTEM_STORE_CURRENT_USER, "My") Catch ex As Exception Console.WriteLine("No encryption certificate found for {0} - {1}", recipient.Address, ex.Message) End Try End Try Next
[C# - Encrypt Email] 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 recipient = oMail.To[i] as MailAddress; try { // Find certificate by email adddress in My Other Peoples Store. // The certificate can be also imported by *.cer file like this: // recipient.Certificate.Load("c:\\encrypt1.cer"); // Once the certificate is loaded to MailAddress, the email content will be encrypted automatically recipient.Certificate.FindSubject(recipient.Address, Certificate.CertificateStoreLocation.CERT_SYSTEM_STORE_CURRENT_USER, "AddressBook"); } catch { try { // No certificate found in AddressBook, lookup it in My recipient.Certificate.FindSubject(recipient.Address, Certificate.CertificateStoreLocation.CERT_SYSTEM_STORE_CURRENT_USER, "My"); } catch (Exception exp) { Console.WriteLine("No encryption certificate found for {0} - {1}", recipient.Address, exp.Message); } } }
[VB - Find Certificate in Active Directory by LDAP] Dim oMail As SmtpMail = New SmtpMail("TryIt") oMail.From = New MailAddress("test@adminsystem.com") oMail.To = New AddressCollection("Encryptor <encrypt@adminsystem.com>") For i As Integer = 0 To oMail.To.Count - 1 Dim recipient As MailAddress = oMail.To(i) Try ' Please change the ldap path as your environment. recipient.Certificate.FindSubject(recipient.Address, Certificate.CertificateStoreLocation.CERT_STORE_PROV_LDAP_STORE, String.Format("ldap:///CN={0},CN=USERS,DC=my,DC=server?userCertificate", recipient.Name)) Catch exp As Exception Console.WriteLine("No encryption certificate found for {0} - {1}", recipient.Address, exp.Message) End Try Next
[C# - Find Certificate in Active Directory by LDAP] SmtpMail oMail = new SmtpMail("TryIt"); oMail.From = "test@adminsystem.com"; oMail.To = "Encryptor <encrypt@adminsystem.com>"; for (int i = 0; i < oMail.To.Count; i++) { MailAddress recipient = oMail.To[i] as MailAddress; try { // Please change the ldap path as your environment. recipient.Certificate.FindSubject(recipient.Address, Certificate.CertificateStoreLocation.CERT_STORE_PROV_LDAP_STORE, String.Format("ldap:///CN={0},CN=USERS,DC=my,DC=server?userCertificate", recipient.Name)); } catch (Exception exp) { Console.WriteLine("No encryption certificate found for {0} - {1}", recipient.Address, exp.Message); } }
Online Examples
Sign Email - VB
Encrypt Email - VB
Sign Email - C#
Encrypt Email - C#
Sign Email - C++/CLI
Encrypt Email - C++/CLI