Я использую комплект Mime для отправки почты и шифрования.Код:
var message = new MimeMessage();
message.From.Add(new MailboxAddress("Test", "xxx@gmail.com"));
//message.From.Add(new MailboxAddress("Sub", "ss@gmail.com"));
message.To.Add(new MailboxAddress("Test Mail", "xx@gmail.com"));
message.To.Add(new MailboxAddress("Test", "yyu@gmail.com"));
//message.To.Add(new MailboxAddress("Test Mail", "yyy@gmail.com"));
message.Subject = "TEST";
var body = new TextPart("plain")
{
Text = "Sample comments"
};
var attachment = new MimeKit.MimePart()
{
Content = new MimeContent(File.OpenRead(filePath), ContentEncoding.Default),
ContentDisposition = new ContentDisposition(ContentDisposition.Attachment),
ContentTransferEncoding = ContentEncoding.Base64,
FileName = Path.GetFileName(filePath)
};
var multipart = new Multipart("mixed");
multipart.Add(body);
multipart.Add(attachment);
message.Body = multipart;
var signCertificateFile = @"E:\D_RSA.pfx";
var signcertificate = new X509Certificate2(signCertificateFile, "", X509KeyStorageFlags.Exportable);
var certificateFile = @"E:\D_RSA.crt";
var certificate = new X509Certificate2(certificateFile, "", X509KeyStorageFlags.Exportable);
var recipientCollection = new MimeKit.Cryptography.CmsRecipientCollection();
var bountyRecipientCertificate = DotNetUtilities.FromX509Certificate(certificate);
var recipient = new CmsRecipient(bountyRecipientCertificate);
recipient.EncryptionAlgorithms = new EncryptionAlgorithm[] { EncryptionAlgorithm.Aes256 };
recipientCollection.Add(recipient);
using (var ctx = new TemporarySecureMimeContext())
{
var encrypted = ApplicationPkcs7Mime.Encrypt(ctx, recipientCollection, message.Body);
var signer = new CmsSigner(signcertificate);
signer.DigestAlgorithm = DigestAlgorithm.Sha256;
message.Body = MultipartSigned.Create(ctx, signer, encrypted);
}
using (var client = new MailKit.Net.Smtp.SmtpClient())
{
client.Connect("smtp.gmail.com", 25, false);
client.Authenticate("xxx@gmail.com", "xxx");
client.Send(message);
client.Disconnect(true);
}
Сообщение зашифровано и успешно доставлено.Но получил ошибку в электронном письме «Отправитель не соответствует цифровой подписи».
Есть идеи по поводу этой ошибки?Я использую сертификаты RSA и MimeKit для шифрования электронной почты.