2016-02-09 116 views
0

我使用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 
+0

看看這個HTTPS:/ /github.com/jstedfast/MimeKit/blob/master/MimeKit/Utils/CharsetUtils.cs –

回答

0

根據例外情況,錯誤在轉換過程中發生,而不是發送。

出於某種原因,MimeKit.ParserOptions的靜態構造函數失敗,因爲MimeKit.Utils.CharsetUtils的靜態構造函數失敗。

看着MimeKit的代碼,我能想到的只是你的服務器沒有UTF-8或Latin1的支持。

例如System.Text.Encoding.GetEncoding (65001, new EncoderExceptionFallback(), new DecoderExceptionFallback());Encoding.GetEncoding (28591, new EncoderExceptionFallback(), new DecoderExceptionFallback());正在拋出異常。

老實說,我不知道這怎麼可能發生。

你在服務器上使用了什麼.NET?

+0

這是在godaddy服務器上。使用.NET 4.5 – eric1825

+0

您能確認它沒有UTF8和/或Latin1支持嗎? – jstedfast

+0

我確認,他們的共享Windows主機只支持UTF-8而不是拉丁語1 – eric1825

0

當初同樣的問題,我打開Visual Studio中的NuGet控制檯和安裝最新的System.Text.Encoding.CodePages包解決了這個問題:

install-Package System.Text.Encoding.CodePages

相關問題