Có một vấn đề cơ bản khi cố gắng thực hiện chữ ký DKIM với System.Net.Mail.MailMessage và System.Net.Mail.SmtpClient đó là để ký thông báo, bạn cần phải ping nội bộ của SmtpClient vào để băm nội dung thư là một trong các bước tạo tiêu đề Chữ ký DKIM. Sự cố xảy ra khi bạn có các chế độ xem hoặc tệp đính kèm thay thế vì SmtpClient sẽ tạo ra các ranh giới đa mới mỗi khi nó viết ra thông điệp phá vỡ giá trị băm cơ thể và do đó giá trị DKIM-Signature.
Để giải quyết vấn đề này, bạn có thể sử dụng các thư viện mã nguồn mở MimeKit và MailKit mã nguồn mở .NET làm khung thay thế để sử dụng System.Net.Mail.
Để thêm một chữ ký DKIM vào một tin nhắn trong MimeKit, bạn sẽ làm một cái gì đó như thế này:
MimeMessage message = MimeMessage.CreateFromMailMessage(mailMessage);
HeaderId[] headersToSign = new HeaderId[] { HeaderId.From, HeaderId.Subject, HeaderId.Date };
string domain = "example.net";
string selector = "brisbane";
DkimSigner signer = new DkimSigner ("C:\my-dkim-key.pem", domain, selector)
{
SignatureAlgorithm = DkimSignatureAlgorithm.RsaSha1,
AgentOrUserIdentifier = "@eng.example.com",
QueryMethod = "dns/txt",
};
// Prepare the message body to be sent over a 7bit transport (such as
// older versions of SMTP). This is VERY important because the message
// cannot be modified once we DKIM-sign our message!
//
// Note: If the SMTP server you will be sending the message over
// supports the 8BITMIME extension, then you can use
// `EncodingConstraint.EightBit` instead.
message.Prepare (EncodingConstraint.SevenBit);
message.Sign (signer, headersToSign,
DkimCanonicalizationAlgorithm.Relaxed,
DkimCanonicalizationAlgorithm.Simple);
Để gửi tin nhắn sử dụng MailKit, bạn sẽ làm một cái gì đó như thế này:
using (var client = new MailKit.Net.Smtp.SmtpClient()) {
client.Connect ("smtp.gmail.com", 465, true);
client.Authenticate ("username", "password");
client.Send (message);
client.Disconnect (true);
}
Hy vọng rằng sẽ giúp.
Bạn có tìm thấy giải pháp bằng cách sử dụng Windows SMTP Server không? – Josh
kiểm tra câu trả lời được chấp nhận của tôi .. – Nnp