微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

将SmtpClient放置在SendComplete中?

如何解决将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
实例? 非常感谢。     

解决方法

您应将
MailMessage
SmtpClient
都放置在
SendAsyncCallback
中。 处置MailMessage不会自动处置SmtpClient(因为您可能希望使用同一SmtpClient发送两条消息,并且您不希望在处置第一条消息后立即处置客户端)。     ,此示例:从MSDN库文档中仅关闭消息,因此我将在实现中使用它:SmtpClient.SendAsync方法
message.Dispose();
我遇到了此问题中提到的问题,该问题总是被取消发送,因此我要删除我的using {}语句:SmtpClient.SendAsync调用会自动取消 好的,我只是尝试发出message.Dispose(),甚至抛出了错误消息,说由于处理了邮件而无法发送电子邮件。可能是因为我的是asp.net mvc应用程序,而示例是控制台应用程序。无论如何,一旦一切都超出范围,垃圾收集器应该选择这些选项。     

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。