System.Net.Mail.MailMessage और System.Net.Mail.SmtpClient के साथ डीकेआईएम हस्ताक्षर करने की कोशिश करने में एक मौलिक समस्या है जो संदेश पर हस्ताक्षर करने के लिए है, आपको SmtpClient के आंतरिक को पोक करने की आवश्यकता है संदेश निकाय को डीकेआईएम-हस्ताक्षर शीर्षलेख उत्पन्न करने में चरणों में से एक के रूप में हैश करने का आदेश। समस्या तब होती है जब आपके पास वैकल्पिक विचार या अनुलग्नक होते हैं क्योंकि SmtpClient प्रत्येक मल्टीपार्ट सीमाएं उत्पन्न करेगा जब हर बार यह संदेश लिखता है जो शरीर हैश को तोड़ता है और इस प्रकार डीकेआईएम-हस्ताक्षर वैधता।
इस हल करने के लिए, आप System.Net.Mail का उपयोग के लिए एक विकल्प ढांचे के रूप में नेट के लिए MimeKit और MailKit खुला स्रोत पुस्तकालयों का उपयोग कर सकते हैं।
MimeKit में किसी संदेश में कोई DKIM हस्ताक्षर जोड़ने के लिए, आप कुछ इस तरह करना होगा:
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);
}
:
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);
संदेश MailKit का उपयोग कर भेजने के लिए, आप कुछ इस तरह करना होगा उम्मीद है की वो मदद करदे।
क्या आपको Windows SMTP सर्वर का उपयोग कर समाधान मिला? – Josh
मेरे स्वीकृत उत्तर की जांच करें .. – Nnp