2013-05-13 69 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(用于电子邮件地址格式错误)。