C# 异步发送电子邮件并进行处理
如果我将C# 异步发送电子邮件并进行处理,c#,asynchronous,async-await,smtpclient,mailmessage,C#,Asynchronous,Async Await,Smtpclient,Mailmessage,如果我将mail.Dispose()放在末尾,则在SendMailAsync()完成调用后,是否总是调用mail.Dispose()?例如,如果我正在调用Post()一千次,那么应该在发送每封电子邮件后调用dispose 这是我的密码: public async Task Post(NotificationData notification) { MailMessage mail = new MailMessage(); mail.To.Add(new MailAddress(n
mail.Dispose()
放在末尾,则在SendMailAsync()
完成调用后,是否总是调用mail.Dispose()
?例如,如果我正在调用Post()
一千次,那么应该在发送每封电子邮件后调用dispose
这是我的密码:
public async Task Post(NotificationData notification)
{
MailMessage mail = new MailMessage();
mail.To.Add(new MailAddress(notification.Email));
mail.Subject = notification.Subject;
mail.Body = notification.Body;
using (SmtpClient smtp = new SmtpClient())
{
smtp.SendCompleted += new SendCompletedEventHandler(SmtpClient_SendCompleted);
await smtp.SendMailAsync(mail);
}
mail.Dispose();
}
您可以使用另一个using来包装邮件。您不需要显式调用Dispose,除非邮件包含我在您的代码中没有看到的附件。@DanielA.White我更新了帖子,将邮件放入using语句中,并在其中分配SmtpClient。那应该没问题吧?@Win明白了,我会允许附件,但这就是我的目的now@Win一般来说,如果它实现了
Dispose
,则应该调用它。在这种情况下,MailMessage
。
public async Task Post(NotificationData notification)
{
using (MailMessage mail = new MailMessage())
{
mail.To.Add(new MailAddress(notification.Email));
mail.Subject = notification.Subject;
mail.Body = notification.Body;
using (SmtpClient smtp = new SmtpClient())
{
smtp.SendCompleted += new SendCompletedEventHandler(SmtpClient_SendCompleted);
await smtp.SendMailAsync(mail);
}
}
}