我花了很多时间为 .NET 寻找一个好的 S/MIME 库,但没有成功。我最终创建了自己的,称为 OpaqueMail。
它是开源的并且完全免费。它继承自 System.Net.Mail.SmtpClient 类,因此移植现有代码很简单。它还包括使用 POP3 和 IMAP 的类。
在http://opaquemail.org/上查看。
发送 S/MIME 三重包装消息(经过数字签名、加密,然后再次进行数字签名)的示例如下:
// Instantiate a new SMTP connection to Gmail using TLS/SSL protection.
SmtpClient smtpClient = new SmtpClient("smtp.gmail.com", 587);
smtpClient.Credentials = new NetworkCredential("username@gmail.com", "Pass@word1");
smtpClient.EnableSsl = true;
// Create a new MailMessage class with lorem ipsum.
MailMessage message = new MailMessage("username@gmail.com", "user@example.com", "Example subject", "Lorem ipsum body.");
// Specify that the message should be signed, have its envelope encrypted, and then be signed again (triple-wrapped).
message.SmimeSigned = true;
message.SmimeEncryptedEnvelope = true;
message.SmimeTripleWrapped = true;
// Specify that the message should be timestamped.
message.SmimeSigningOptionFlags = SmimeSigningOptionFlags.SignTime;
// Load the signing certificate from the Local Machine store.
message.SmimeSigningCertificate = CertHelper.GetCertificateBySubjectName(StoreLocation.LocalMachine, "username@gmail.com");
// Send the message.
await smtpClient.SendAsync(message);
希望这可以帮助。