gpt4 book ai didi

c# - 在 .NET 4.0 下使用 SmtpClient、SendAsync 和 Dispose 的最佳实践是什么

转载 作者:IT王子 更新时间:2023-10-29 03:34:52 37 4
gpt4 key购买 nike

我对如何管理 SmtpClient 有点困惑,因为它是一次性的,尤其是当我使用 SendAsync 进行调用时。据推测,在 SendAsync 完成之前我不应该调用 Dispose。但是我应该调用它吗(例如,使用“使用”)。该场景是一个 WCF 服务,它会在调用时定期发送电子邮件。大多数计算速度很快,但发送电子邮件可能需要一秒钟左右的时间,因此异步会更可取。

每次发送邮件时都应该创建一个新的 SmtpClient 吗?我应该为整个 WCF 创建一个吗?帮助!

更新 如果有所不同,每封电子邮件始终是为用户定制的。 WCF 托管在 Azure 上,Gmail 用作邮件程序。

最佳答案

最初的问题是针对 .NET 4 提出的,但如果从 .NET 4.5 开始有帮助,SmtpClient 会实现异步可等待方法 SendMailAsync .

因此,异步发送邮件如下:

public async Task SendEmail(string toEmailAddress, string emailSubject, string emailMessage)
{
using (var message = new MailMessage())
{
message.To.Add(toEmailAddress);

message.Subject = emailSubject;
message.Body = emailMessage;

using (var smtpClient = new SmtpClient())
{
await smtpClient.SendMailAsync(message);
}
}
}

最好避免使用 SendAsync 方法。

关于c# - 在 .NET 4.0 下使用 SmtpClient、SendAsync 和 Dispose 的最佳实践是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7276375/

37 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com