2011-08-02 59 views
1
using (MailMessage message = new MailMessage()) 
       { 
        message.From = new MailAddress(userEmail.InnerText); 
        message.To.Add(new MailAddress("[email protected]")); 
             message.Subject = selection.Text; 
        message.Body = htmlBody(); 
        message.IsBodyHtml = true; 
        SmtpClient client = new SmtpClient("142.16.0.142"); 
        client.Send(message); 

       } 

如何驗證client.send(message)是否成功?c#MailMessage類 - 如何驗證服務器執行的消息

回答

3

Send()方法內在try..catch塊和catch SmtpFailedRecipientsException

try 
{ 
    client.Send(message); 
} 
catch(SmtpFailedRecipientsException smtpFex) 
{ 
    string failedRecipient = smtpFex.FailedRecipient; 
    // it will return FailedRecipient's emailID. Now check the value of failedRecipient 
    //and take the action/s. 
} 
0

沒有辦法測試SMTP服務器是否啓動並運行而不發送消息。

只有你可以件事是包裹在一個try/catch塊.Send採取的行動失敗(記錄在/ etc)

2

你真的不能肯定的是,消息被成功的情況。沒有確切的方式來驗證郵件是否已發送。將這些語句放在try catch塊中,看看它是否捕獲到異常。 「

」Send發送電子郵件給接受的收件人,然後拋出SmtpFailedRecipientsException異常將包含被拒絕的收件人列表。你可以參考http://msdn.microsoft.com/en-us/library/swas0fwc.aspx瞭解更多。

0

您可以使用try-catch塊來捕獲拋出的包含SMTP拒絕消息的任何異常。但是,如果SMTP服務器接受要發送的郵件,則連接將關閉並顯示成功,但無法知道它是否被有效傳遞。在郵件客戶端中,閱讀收據是檢查郵件是否成功傳遞的唯一方法。

相關問題