2010-06-09 29 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

相關問題