Я добавил полную поддержку для генерации и проверки подписей DKIM в MimeKit с открытым исходным кодом (Лицензия: MIT) и полностью бесплатным для коммерческого использования.
Если вам также нужен SMTP, Поддержка POP3 и / или IMAP, проверьте MailKit , который построен поверх MimeKit.
Поскольку MimeKit и MailKit не генерируют новый набор граничных строк каждый раз, когда они пишутсяв поток, они не страдают от проблем, с которыми вы столкнетесь, используя System.Net.Mail и DKIM.Net [1] (не вина DKIM.Net, чтобы быть понятным).
Чтобы добавить подпись DKIMдля сообщения в MimeKit вы должны сделать что-то вроде этого:
var message = CreateMyMessage ();
var headersToSign = new [] { HeaderId.From, HeaderId.To,
HeaderId.Subject, HeaderId.Date };
var signer = new DkimSigner ("C:\my-dkim-key.pem") {
AgentOrUserIdentifier = "@eng.example.net",
Domain = "example.net",
Selector = "brisbane",
};
message.Sign (signer, headersToSign,
DkimCanonicalizationAlgorithm.Relaxed,
DkimCanonicalizationAlgorithm.Simple);
Чтобы отправить сообщение с помощью MailKit, вы должны сделать что-то вроде этого:
using (var client = new SmtpClient ()) {
client.Connect ("smtp.gmail.com", 465, true);
client.Authenticate ("username", "password");
client.Send (message);
client.Disconnect (true);
}
Примечания:
- Поскольку System.Net.Mail.SmtpClient генерирует новый набор пограничных маркеров для составных сообщений (что используется при наличии вложений или альтернативных представлений), вы не можете использовать DKIM.Net для подписи указанных сообщений, поскольку tПодпись будет прервана, когда вы действительно отправите сообщение, потому что тело сообщения в формате MIME будет изменено.