4

SmtpClientとMailMessage(.net 3.5)を使用して電子メールを送信する場合、「宛先」の電子メールアドレスは送信前に検証されます。アットマークの前にドット(。)が付いた電子メールアドレスの大きなスタックがあり、SmtpClientを使用してメッセージを送信しようとするとFormatExceptionが発生します。アットマークの前のドットは無効であるため、これは実際には良いことです。残念ながら、これらの電子メールは現実の世界に存在し、好みの電子メールクライアントを使用して送信すると配信されます。

私の質問は、SmtpClient / MailMessageを介した電子メールの検証を抑制できますか?

4

2 に答える 2

2

編集:VB2005でサンプルコードを試しましたが、例外も発生しました。以下のコードはVB2010Expressで正常に機能しますが、現在修正されているバグのようです。MSDNの引用は4.0のドキュメントからのものであり、そのスニペットは以前のバージョンのMSDNページにはありません。

今は試すことができませんが、あなたのメールアドレスはどのようにフォーマットされていますか?MailAddressクラスのドキュメントには、ユーザー名の連続ドットと末尾ドットがサポートされていると記載されています。たとえば、user ... name ..@hostです。(ここから引用)。

編集:サンプルを追加しました。

Try
    Dim smtpClient As New SmtpClient()
    smtpClient.Host = "mailserver"
    Dim fromAddress As New MailAddress("from@test.com")
    Dim toAddresses As New MailAddress("test.test.@test.com")
    Using message As New MailMessage()
         message.From = fromAddress
         message.To.Add(toAddresses)

         message.IsBodyHtml = False
         message.Subject = "test"
         smtpClient.Send(message)
    End Using
    TextBox1.Text = "OK"
Catch ex As SmtpException
    TextBox1.Text = ex.ToString()
End Try
于 2010-06-09T07:46:31.910 に答える
2

これは、電子メールを送信しようとした後のエラーである可能性があります。

例外がスローされた場所を正確に確認できるように、CallStackを提供できますか


更新:リフレクターからの逆アセンブルコードによると、この問題はVS2010および.NET4.0にアップグレードすることによってのみ販売できます

System.Netアセンブリの下位バージョンには、この問題を解決する方法がありません

于 2010-06-09T07:55:00.893 に答える