2017-09-12 1 views
-1

for 루프로 들어가고 다른 기능을 사용하여 전자 메일을 보내는 코드가 있습니다.잡기를 시도한 다음 계속하십시오

오류가있는 경우 문제가있는 이메일 이후에도 이메일을 계속 보내지 않습니다.

오류가 발견되어 시스템에서 나머지 이메일을 계속 보내고 싶습니다. 아래 코드를 참조하십시오. 그래서

foreach (DataRow row in rows) 
    { 
        try 
        { 
         //Set Values here 
         string strFN = row["FirstName"].ToString(); 
         string strLN = row["LastName"].ToString(); 
         string strEmail = row["Email"].ToString(); 
         //some more here 


         Sent = EmailFunctions.SendEmail(strEmail, strFromAddress, strFromName, strSubject, strFN + " " + strLN, strBody, strSignOffEmbeddedImagePath, strSignOffEmbeddedImageName, strCCReminderEmail); 
        } 
        catch (Exception exc) 
        { 
         //Log exception!! 
         continue; 
        } 
       } 
+0

내가 왜 투표 대상이됩니까? –

답변

1

당신은 foreach 문 내부의 try catch 블록을 이동해야 에.

귀하의 경우에는

, SendEmail(...)는, 그래서

try 
{ 
    Sent = EmailFunctions.SendEmail(...); 
} 
catch (Exception ex) 
{ 
    // Capture mail send exception 
} 

하거나

public static bool SendEmail(...) 
{ 
    try 
    { 
     ... 
     using (MailMessage message = new MailMessage(...)) 
     { 
      ... 

      return true; 
     } 
    } 
    catch (Exception ex) 
    {   
     // Some function to record which mail didn't send 
     return false; 
    } 
} 

throw 이후 여기에 필요하지 않는 것 같습니다.

DB 액세스 문제도 캡처하려면 try catchforeach 외부에 둘 수 있습니다 (단, 루프 외부에서는 continue을 제거하십시오).

+0

죄송합니다. 거기에 추가하는 것을 잊어 버렸습니다. 예제에 추가했지만 여전히 문제가있었습니다. –

+0

문제점은 무엇입니까? 여기에서 자세한 내용을 제공해주십시오. –

0

당신이해야 try catch 만 지역은 인터넷과 같은 일반적인 사용에서 잘못도 갈 수도 기대, IO, 스트림 :

public static SendEmailResult setEmailAndSend(DataRow[] rows) 
{ 
    try 
    { 
     SendEmailResult results = new SendEmailResult(); 

     foreach (DataRow row in rows) 
     { 
      try 
      { 
       //Set Values here 
       string strFN = row["FirstName"].ToString(); 
       string strLN = row["LastName"].ToString(); 
       string strEmail = row["Email"].ToString(); 
       //some more here 


       Sent = EmailFunctions.SendEmail(strEmail, strFromAddress, strFromName, strSubject, strFN + " " + strLN, strBody, strSignOffEmbeddedImagePath, strSignOffEmbeddedImageName, strCCReminderEmail); 
      } 
      catch (Exception exc) 
      { 
       //do stuff 

       continue; 
      } 
     } 
    } 
    catch (Exception exc) 
    { 
     //do something 
    } 
} 


public static bool SendEmail(String strToAddress, String strFromAddress, String strFromName, String strSubject, String strRecipientName, String strBody, String strEmbeddedImagePath, String strEmbeddedImageName, String strCCReminderEmail) 
{ 
    try 
    { 
     //SMTPClient settings in webconfig 
     SmtpClient client = new SmtpClient(); 
     client.EnableSsl = true; 

     using (MailMessage message = new MailMessage(
      new MailAddress(strFromAddress, strFromName), 
      new MailAddress(strToAddress, strRecipientName))) 
     { 
      message.IsBodyHtml = true; 
      message.Subject = strSubject; 
      message.Body = strBody; 

      if (!string.IsNullOrEmpty(strCCReminderEmail)) 
       message.CC.Add(strCCReminderEmail); 

      client.Send(message); 

      return true; 
     } 
    } 
    catch (Exception ex) 
    { 
     throw; 

    } 
} 
+0

예제를 업데이트했지만 문제가 계속 발생했습니다. –

+0

정확히 어떤 문제가 있습니까? 모든 예외 메시지? –

관련 문제