在SendComplete中配置SmtpClient?

Jef*_*hen 9 c# dispose smtpclient sendasync

当我使用SmtpClient的SendAsync发送电子邮件时,如何smtpclient正确处理实例?

让我们说:


MailMessage mail = new System.Net.Mail.MailMessage()
{
   Body = MailBody.ToString(),
   IsBodyHtml = true,
   From = new MailAddress(FromEmail, FromEmailTitle),
   Subject = MailSubject
};
mail.To.Add(new MailAddress(i.Email, ""));
SmtpClient sc = new SmtpClient(SmtpServerAddress);
//Add SendAsyncCallback to SendCompleted
sc.SendCompleted += new SendCompletedEventHandler(SendAsyncCallback);
//using SmtpClient to make async send (Should I pass sc or mail into SendAsyncCallback?)
sc.SendAsync(mail, sc);
Run Code Online (Sandbox Code Playgroud)

SendAsyncCallback方法中,我应该打电话sc.Dispose(),还是mail.Dispose()

我检查了MSDN文件,一个例子调用了MailMessage.Dispose(),但是这个dispose方法还会配置SmtpClient实例吗?

非常感谢.

Bra*_*ger 6

您应该同时处理 theMailMessageSmtpClientin SendAsyncCallback

处理 MailMessage 不会自动处理 SmtpClient(因为您可能希望使用相同的 SmtpClient 发送两条消息,并且您不希望在处理第一条消息后立即处理客户端)。