将SmtpClient放置在SendComplete中?
|
当我使用SmtpClient \的SendAsync发送电子邮件时,如何正确处置ѭ0实例?
比方说:
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);
在SendAsyncCallback
方法中,我应该叫sc.Dispose()
还是mail.Dispose()
?
我检查了MSDN文档,其中一个示例调用MailMessage.Dispose(),但是此dispose方法是否还会处理SmtpClient
实例?
非常感谢。
没有找到相关结果
已邀请:
2 个回复
壬驴拿歪竞
和
都放置在
中。 处置MailMessage不会自动处置SmtpClient(因为您可能希望使用同一SmtpClient发送两条消息,并且您不希望在处置第一条消息后立即处置客户端)。
了驳
我遇到了此问题中提到的问题,该问题总是被取消发送,因此我要删除我的using {}语句:SmtpClient.SendAsync调用会自动取消 好的,我只是尝试发出message.Dispose(),甚至抛出了错误消息,说由于处理了邮件而无法发送电子邮件。可能是因为我的是asp.net mvc应用程序,而示例是控制台应用程序。无论如何,一旦一切都超出范围,垃圾收集器应该选择这些选项。