我使用MimeKit支持的現有System.Net.Mail.MailMessage進行測試,除了使用MimeKit的DkimSigner和MailKit的Smtp客戶端之外,還可以直接轉換爲MimeMessage。'MimeKit.ParserOptions'的類型初始值設定項引發異常
我得到「'MimeKit.ParserOptions'的類型初始值設定項引發了一個異常。」使用提示'at MimeKit.MimeMessage.CreateFromMailMessage(MailMessage message)'的堆棧跟蹤'
還有一個內部忽略:「'MimeKit.Utils.CharsetUtils'的類型初始值設定項引發異常。 Stacktrace:'在MimeKit.ParserOptions..ctor()在MimeKit.ParserOptions..cctor()
我沒有得到任何異常在我的開發盒,但只執行到轉換和簽署不是實際的smtp發送。
Dim netMail As New System.Net.Mail.MailMessage
netMail.From = New System.Net.Mail.MailAddress("n[email protected]")
netMail.To.Add(txtTo.Text)
netMail.Subject = txtSubject.Text
netMail.Body = txtContent.Text
Dim mimeMail As MimeMessage = CType(netMail, MimeMessage)
Dim headersToSign = New List(Of HeaderId)
headersToSign.Add(HeaderId.From)
headersToSign.Add(HeaderId.To)
headersToSign.Add(HeaderId.Subject)
headersToSign.Add(HeaderId.Date)
Dim privateKeyPath = AppDomain.CurrentDomain.BaseDirectory + "\App_Data\rsa.private"
Dim signer = New Cryptography.DkimSigner(privateKeyPath, "lionandlambchurch.com", "key1")
Dim loggerPath = AppDomain.CurrentDomain.BaseDirectory + "\logs\smtp-mailkit.log"
mimeMail.Sign(signer, headersToSign, Cryptography.DkimCanonicalizationAlgorithm.Relaxed, Cryptography.DkimCanonicalizationAlgorithm.Simple)
' Don't attempt sending locally
If Request.Url.Host.ToLower().Contains("localhost") Then Return
Using client As New MailKit.Net.Smtp.SmtpClient(New ProtocolLogger(loggerPath))
client.Connect("relay-hosting.secureserver.net", 25, False)
If chkAuthenticate.Checked Then
client.Authenticate("[email protected]", "****")
End If
client.Send(mimeMail)
client.Disconnect(True)
End Using
看看這個HTTPS:/ /github.com/jstedfast/MimeKit/blob/master/MimeKit/Utils/CharsetUtils.cs –