2010-06-09 25 views
4

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

我的问题是,可以通过SmtpClient/MailMessage抑制电子邮件验证吗?

+2

好像你可能需要升级到2010,做工精细那里,但是我得到的异常在2005年(没有进入到2008年马上)。 – 2010-06-09 09:10:58

+0

是的,这种情况已在.NET 4中修复。VS 2008使用与2005年相同的System.dll,并具有相同的行为。 – 2010-06-09 09:23:53

+0

我有这个网点4和2010年 – Dani 2011-07-30 22:37:09

回答

2

发送电子邮件后可能会出现错误。

你能提供一些调用堆栈,所以我们可以看到确切位置抛出异常


更新: 据反射拆机代码,这个问题只能通过升级到VS2010和.NET出售System.Net装配的4.0

下的版本有没有办法解决这个问题

+0

对不起。尝试使用例如“test。@ example.com”的电子邮件地址构造MailMessage对象时引发异常。 – Mats 2010-06-09 08:04:01

+0

@Matthias:您可以发表您正在使用的实际代码,正如我在回复上述Barry的评论时所说的,我可以用这种格式的地址构建一封电子邮件。我会修改我的答案,以包含我使用的示例代码。 – 2010-06-09 08:34:18

+0

@ ho1:我的代码或多或少与您的代码完全相同。但是我使用C#,就像Barry一样,当使用“test.test。@ test.com”构造MailAddress对象时,我会得到格式异常。 – Mats 2010-06-09 08:43:37

2

编辑:试了VB2005中的示例代码,我也得到了异常。下面的代码在VB2010 Express中工作正常,虽然这似乎是一个现在已经修复的错误。 MSDN引用来自4.0文档,该代码片段不在MSDN页面的早期版本中。

我现在无法尝试,但确切地说,您的电子邮件地址格式如何? MailAddress类的文档声明其支持用户名中的连续和尾部点。例如,user ... name .. @ host。(引用复制here)。

编辑:添加样本。

Try 
    Dim smtpClient As New SmtpClient() 
    smtpClient.Host = "mailserver" 
    Dim fromAddress As New MailAddress("[email protected]") 
    Dim toAddresses As New MailAddress("[email protected]") 
    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 
+0

这可能是什么文件说明,但我刚刚测试过,它不允许'test.test。@ test.com' – codingbadger 2010-06-09 07:50:01

+0

@Barry:我现在设法尝试它和'SmtpClient'对于我这种格式的地址没有问题。但是,实际的SMTP客户端拒绝地址,因此引发异常,但这与传递错误的'SmtpClient'无关。那么你确定它对你来说不一样吗? – 2010-06-09 08:31:56

+0

创建新的MailAddress时出现FormatException错误。我已经在C#和VB(Visual Studio 2008) – codingbadger 2010-06-09 08:38:56

相关问题