当使用SmtpClient和MailMessage (.net 3.5)发送电子邮件时,“收件人”电子邮件地址在发送前会得到验证。我有一大堆带点(.)的电子邮件地址。在at-sign之前,当您尝试使用SmtpClient发送消息时,会导致FormatException。这实际上是一件好事,因为根据规范,at-sign前的点是无效的。不幸的是,这些电子邮件存在于现实世界中,如果你使用你喜欢的电子邮件客户端发送它们,它们就会被递送。
我的问题是,是否可以抑制通过SmtpClient/MailMessage进行的电子邮件验证?
发布于 2010-06-09 15:55:01
这可能是尝试发送电子邮件后出现的错误。
您是否可以提供一些CallStack,以便我们可以查看抛出异常的确切位置
更新:根据reflector的反汇编代码,这个问题只能通过升级到VS2010和.NET 4.0来解决
较低版本的System.Net程序集无法解决此问题
发布于 2010-06-09 15:46:32
编辑:尝试了VB2005中的示例代码,我也得到了异常。下面的代码在VB2010 Express中运行良好,但似乎是一个错误,现在已经修复了。MSDN引用来自4.0文档,该代码片段不在MSDN页面的早期版本中。
我现在不能尝试,但是你的电子邮件地址到底是怎么格式化的?MailAddress类的文档指出,它支持用户名中的连续点和尾随点。例如,用户...名称..@主机。(引用自here)。
编辑:添加示例。
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 Tryhttps://stackoverflow.com/questions/3003837
复制相似问题