2013-05-13 67 views
0

什麼是寫下面的代碼的最佳方式:嘗試的foreach循環內抓

foreach (DataRow row in table.Rows) 
{ 
    try 
    { 
     SendEmail(emailadress); //method that will send emails 
     MessageSent(true); 
    } 

    catch (Exception) 
    { 
     MessageSent(false); 
     break; 
    } 
} 

void MessageSent(Boolean IsSuccesful) 
{ 
    if (IsSuccesful) 
    { 
     Response.BufferOutput = true; 
     Response.Redirect("~/Page.aspx"); 
    } 
    else 
    { 
     lblSent.Text = "Email has failed."; 
    } 
} 

我試圖通過一個DataTable迭代和發送電子郵件到DataTable中列出的不同的電子郵件,然後重定向到數據表中的所有電子郵件都已發送完畢後,Page.aspx成功。但是,如果電子郵件失敗,我想顯示標籤lblSent。我只是不知道這是否是最好的方式。

+0

你嘗試過什麼嗎?發生了什麼? – 2013-05-13 23:23:12

+0

它工作正常,但我想知道是否有更有效的方式來寫這個。我還是新來的.net – 2013-05-13 23:24:33

+0

爲什麼你不排隊目標電子郵件,然後發送一次?我覺得這比將電子郵件發送到每個地址更有效率。 – 2013-05-13 23:26:59

回答

0

除此之外,你不應該趕上Exception類型。只捕獲你知道如何處理的異常。你不能處理NullReferenceExceptionArgumentNullException,所以不要嘗試。只捕獲發送電子郵件時可能拋出的異常。諸如SmtpExceptionFormatException(用於電子郵件地址格式錯誤)。