2013-11-21 3 views
0

Я отправляю почту по нескольким адресам с помощью smtp, и я хочу получить почтовый адрес, на который был получен сбой sendmail.Поймайте адрес электронной почты, если не удалось

message.To.Add(new System.Net.Mail.MailAddress("[email protected]")); 
message.To.Add(new System.Net.Mail.MailAddress("[email protected]")); 
message.To.Add(new System.Net.Mail.MailAddress("[email protected]")); 
client.Send(message); 

В вышеуказанном списке для первой и третьей почты отправлено, а для второго - нет. Так что я хочу поймать неудавшийся почтовый адрес ([email protected]).

Решение Pls

ответ

0

Внутри вашего метода client.Send() вы должны называть каждый конкретный метод отправки в try-catch блоке, а затем служить провал. Другим вариантом является такой повторно выдать исключение и поймать его в catch блока в коде вы прилагается:

try { 
client.Send(message); 
} 
catch (Exception e) 
{ 
//do smth with it 
} 

Расскажите нам больше о вашем методе Send() и client объекта. Это позволит нам быть более конкретными.

0

Это довольно легко, если вы используете C# SmtpClient и можете использовать метод SendAsync

//client and MailMessage construction 
client.SendCompleted += (sender, eventArgs) => { 
    string emailAddress = eventArgs.UserState as String; 
    if (eventArgs.Error != null) { 
     //an error occured, you can log the email/error   
    } 
    else //the email sent successfully you can log the email/success 
}; 
client.SendAsync(mail, mail.Sender.Address); 

если вы предпочитаете лямбда может быть заменена новым SendCompletedEventHandler (имяМетод); и имеют такой метод, как

... methodName(object sender, System.ComponentModel.AsyncCompletedEventArgs eventArgs) 
{ 
    string emailAddress = eventArgs.UserState as String; 
     if (eventArgs.Error != null) { 
      //an error occured, you can log the email/error 
     } 
     else //the email sent successfully you can log the email/success 
} 
Смежные вопросы