0

MimeKit の DkimSigner と MailKit の Smtp クライアントを使用することに加えて、MimeMessage への直接キャストをサポートする MimeKit の既存の System.Net.Mail.MailMessage を使用してテストしています。

「'MimeKit.ParserOptions' の型初期化子が例外をスローしました。」というメッセージが表示されます。「at MimeKit.MimeMessage.CreateFromMailMessage(MailMessage message)」というスタック トレースを使用

内部例外もあります。「'MimeKit.Utils.CharsetUtils' の型初期化子が例外をスローしました。」スタックトレース: 'at MimeKit.ParserOptions..ctor() at MimeKit.ParserOptions..cctor()

開発ボックスで例外は発生していませんが、実際のSMTP送信ではなく、変換と署名までしか実行されません。

    Dim netMail As New System.Net.Mail.MailMessage
    netMail.From = New System.Net.Mail.MailAddress("no_reply@lionandlambchurch.com")
    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("no_reply@lionandlambchurch.com", "****")
        End If
        client.Send(mimeMail)
        client.Disconnect(True)
    End Using
4

2 に答える 2