我想創建一個應用程序發送電子郵件到smtp服務器。檢查郵件是否成功發送在VB.NET與SMTPClient
服務器未設置爲固定,但會根據電子郵件應發送到的電子郵件地址的域部分進行查找。
實施例:
郵件發送至:[email protected]
域的部分:stackoverflow.com
一個MX-記錄查找(命令行「NSLOOKUP型= MX計算器的結果。 COM「:
stackoverflow.com MX偏好= 30,郵件交換= stackoverflow.com.s9b1.psmtp.com stackoverflow.com MX偏好= 40,郵件交換= ST MX preference = 10,mail exchanger = stackoverflow.com.s9a1.psmtp.com stackoverflow.com MX preference = 20,mail exchanger = stackoverflow.com.s9a2.psmtp。 com
這將是非常有用的,知道郵件是否被郵件服務器接受,並且郵件已成功發送。
到目前爲止,我能夠通過使用System.Net.Mail.SMTPClient對象及其SendAsync函數獲取SMTP-Server錯誤代碼(如果出現錯誤(StatusCode 5xx)),如果出現錯誤,我會在SMTPClient的回調事件中獲得一個Exception-Object
我很清楚,並非每個郵件服務器都會告訴我mailaccount是否真的存在,然後拒絕帶有錯誤代碼的郵件,但是相反,只是接受郵件,然後刪除它。因此,我將不勝感激另一種方法來檢查郵件是否發送(注意:未讀取,這將是讀取確認)
最終目的是: 嘗試使用它的域名mailserver向收件人發送電子郵件,如果失敗,請根據錯誤代碼進行處理(用戶不存在 - > abort/mailserver未響應 - >使用其他郵件服務器(如果可用))。
在此先感謝(和錯別字:)對不起)
hm。好的,所以我堅持把錯誤至少定義爲它不工作... – Nicholas
是的,從程序員的角度來看,它非常令人沮喪,但想象一下垃圾郵件發送者可以用這些信息做些什麼。他們可以(並且確實)創建一個字母和數字組合的字典,並在每個可能的SMTP服務器上嘗試它們。那些被「發送」的是有效的,其餘的都是無效的。現在他們已經有了一個有效的電子郵件地址的純粹列表,每個SMTP管理員都在哭,因爲他們的機器正在被數百萬的SMTP請求所擊中。 –
如果我在域中添加了一個尾隨時間段,與沒有相比的情況相比,究竟有什麼區別,爲什麼如果在沒有一個域名的情況下查看域名,會導致問題? – Nicholas