在SendComplete中配置SmtpClient?
当我使用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);
在SendAsyncCallback
方法中,我应该调用sc.Dispose()
还是mail.Dispose()
?
我检查了MSDN文件,一个例子调用了MailMessage.Dispose(),但是这个dispose方法还会配置SmtpClient
实例吗?
非常感谢。
您应该在SendAsyncCallback
配置MailMessage
和SmtpClient
。
处置MailMessage不会自动处理SmtpClient(因为您可能希望使用相同的SmtpClient发送两条消息,并且您不希望在丢弃第一条消息后立即处理客户端)。
这个例子:从MSDN Library文档中只关闭Message,所以我将在我的实现中使用它: SmtpClient.SendAsync方法
message.Dispose();
我遇到了这个问题中提到的问题,其中发送始终被取消,所以我删除了我的using {}语句: SmtpClient.SendAsync调用自动取消
好吧,我只是尝试发出message.Dispose(),甚至因为消息被处理而抛出错误,说它无法发送电子邮件。 可能是因为我的是一个asp.net mvc应用程序,该示例是一个控制台应用程序。 无论如何,一旦一切都超出范围,垃圾收集器应该选择这些选项……
- 如何在C#Express中选择32位或64位构建?
- Selenium RemoteWebDriver c# – System.InvalidOperationException
- 以编程方式调用EntityDeploy构建任务
- 为什么`String.Trim()`不修剪对象本身?
- 通过base / sibling类阻止受保护成员访问的真正原因是什么?
- 使用C#反向工程SSIS包
- 需要C#构造函数语法解释
- 为什么在即将推出的.NET 4.0中没有类似IMonad 的东西
- Xamarin Forms:System.Reflection.TargetInvocationException:调用目标抛出了exception