簡體   English   中英

如何知道我是否使用System.Net.Mail成功發送電子郵件

[英]How to know whether I send the email successfully using System.Net.Mail

我使用C#使用System.Net.Mail發送電子郵件。

但我怎么知道電子郵件是成功發送還是失敗?

當然不是一個直接的答案,但這里有一篇來自Coding Horror的關於通過代碼發送電子郵件的好文章,它解決了你的問題。

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

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

大多數廣告郵件系統通過設置有效的“來自地址”並監控該帳戶的收件箱來跟蹤回彈。 然而,即使這樣也不是萬無一失的(例如,不在辦公室的消息)。

我會堅持抓住例外並留下其他人。 如果您不確定電子郵件是否有效,可能您應該向用戶發送一個代碼,讓他們驗證他們的電子郵件地址。

考慮到電子郵件是即發即忘,這可能會非常困難。 除非您收到異常,表示由於憑據錯誤等導致的客戶端 - 服務器通信問題,否則您無法知道郵件是否成功發送(意味着:到達收件人)。

我個人從來沒有遇到過這方面的答案,因為沒有一種方法可以讓你的郵件離開你的位置,一旦離開你就不會被扔掉。 您可以嘗試檢查發送郵箱是否有NDR(無交付報告)但您並不總是被授予獲得一個

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM