4

使用 SmtpClient 和 MailMessage (.net 3.5) 发送电子邮件时,“收件人”电子邮件地址在发送前得到验证。我有一大堆电子邮件地址,在 at 符号前有一个点 (.),当您尝试使用 SmtpClient 发送消息时会导致 FormatException。这实际上是一件好事,因为根据规范,at 符号前的点是无效的。不幸的是,这些电子邮件存在于现实世界中,并且如果您使用首选的电子邮件客户端发送它们,它们就会被传递。

我的问题是,是否可以禁止通过 SmtpClient/MailMessage 进行电子邮件验证?

4

2 回答 2

2

编辑:在 VB2005 中尝试了示例代码,我也遇到了异常。下面的代码在 VB2010 Express 中运行良好,但似乎是一个现已修复的错误。MSDN 引用来自 4.0 文档,该片段不在 MSDN 页面的早期版本中。

我现在无法尝试,但您的电子邮件地址究竟是如何格式化的?该类的文档MailAddress声明它支持用户名中的连续点和尾随点。例如,用户...名称..@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,以便我们可以查看确切抛出异常的位置


更新:根据reflector的反汇编代码,这个问题只能升级到VS2010和.NET 4.0才能卖掉

较低版本的 System.Net 程序集没有办法解决这个问题

于 2010-06-09T07:55:00.893 回答