获取System.Net.Mail.SendCompletedEventHandler中的电子邮件地址

时间:2014-08-25 13:26:36

标签: .net email callback smtpclient

我有一种方法可以将电子邮件发送到多个电子邮件地址。像这样:

foreach(var email in emails){

    // code to create mail variable

    var smtp = new SmtpClient();
    smtp.SendCompleted += new SendCompletedEventHandler(callBack);
    smtp.SendMailAsync(mail);
}

正如预期的那样,每个电子邮件地址都会调用一次回调。回调会在通知客户端弹出成功/错误消息。

我希望在回调中获取电子邮件地址,以便能够使用导致成功/错误的电子邮件指定成功/错误消息。 这是我想要的回调,使用EMAIL变量

EmailSender.SendAsyncEmailDoneCallBack callBack = (sender, e) => {
    if (e.Cancelled)
        PushSystemNotification("Message canceled to " + EMAIL, CurrentUser);
    if (e.Error != null) 
        PushSystemNotification("Message not sent to " + EMAIL, CurrentUser);
    else
        PushSystemNotification("Message sent to " + EMAIL, CurrentUser);
};

那么,有人能告诉我是否可以从此发送回调中获取电子邮件地址?或者是否有其他方法可以提供此功能?

1 个答案:

答案 0 :(得分:2)

只需使用SendAsync(不是SendMailAsync

的第二个参数
smtp.SendCompleted += (sndr, e) => {
    Console.WriteLine(e.UserState);
};
smtp.SendAsync(mail,"test");

它可以是您要传递给 SendCompleted 事件处理程序的任何对象。