2010-05-22 115 views

回答

5

當然不是一個直接的答案,但here是一個偉大的文章從編碼恐怖關於通過代碼發送電子郵件,它解決您的問題。

2

考慮到電子郵件是萬無一失的,這可能相當困難。除非你得到一個例外,由於證書錯誤等原因表示客戶端 - 服務器通信問題,否則你無法知道郵件是否成功發送(意思是:到達收件人)。

1

我個人從來沒有遇到過這個問題的答案,因爲沒有真正的方法可以讓您的郵件離開您的位置,一旦它離開您就不會被扔掉。你也許可以嘗試檢查發送郵箱的NDR(沒有發送報告),但你並不總是被授予獲得一個

4

簡單的答案是,如果它是一個可檢測的失敗,然後SmtpClient.Send將拋出一個SmtpFailedRecipientsException(它會拋出一個如果存在連接問題,則爲SmtpException)。

長的答案是,由於許多原因,你不一定會得到一個例外。這可能是因爲您的SMTP服務器正在緩衝發送(或者將它設置爲本地iis或本地目錄),或者僅僅是因爲SMTP服務器不支持返回這些錯誤代碼。

大多數廣告郵件系統通過設置有效的「發件人地址」並監控該帳戶的收件箱來跟蹤反彈。但是,即使如此,也不是萬無一失的(例如,不在辦公室的消息)。

我會堅持捕捉異常並留下其他人。如果您不確定電子郵件是否有效,也許您應該向用戶發送驗證其電子郵件地址的代碼。

1

如果你的意思是發送成功,那麼其他海報說,如果它不能發送,那麼你會得到一個例外。如果你確實意味着成功接收,那麼這是一個完全不同的問題。 SMTP根本沒有一種機制來查明郵件是否已經被收件人收到,有時你會得到一個ndr,如果服務器不能提供你不會的其他時間。你可以嘗試做垃圾郵件發送者所做的事情,那就是在查詢字符串中用唯一標識符在你的html電子郵件正文中放置某種圖像鏈接。這將允許你鏈接到圖像網址的人與電子郵件。但是,這隻會告訴你,如果網址被擊中,電子郵件已被閱讀,它不會告訴你,該電子郵件沒有收到,因爲收件人可能根本沒有允許的圖像顯示在他們的電子郵件客戶端。

相關問題