我正在尝试使用 SmtpClient.SendMailAsync 方法发送大量电子邮件。 这是我从简单控制台应用程序调用的测试方法。
static void Main(string[] args)
{
SendMailsOnebyOneAsync().GetAwaiter().GetResult();
}
public static async Task SendMailsOnebyOneAsync()
{
for (int i = 0; i < 1000; i++)
{
try
{
using (SmtpClient sMail = new SmtpClient("XXX"))
{
sMail.DeliveryMethod = SmtpDeliveryMethod.Network;
sMail.UseDefaultCredentials = false;
sMail.Credentials = null;
var fromMailAddress = new MailAddress("XXX");
var toMailAddress = new MailAddress("XXX");
MailMessage message = new MailMessage(fromMailAddress, toMailAddress)
{
Subject = "test"
};
await sMail.SendMailAsync(message);
Console.WriteLine("Sent {0}", i);
}
}
catch (Exception e)
{
Console.WriteLine(e.Message);
}
}
}
有时该方法会挂起 - 它等待 SendMailAsync 似乎卡住了并且没有返回。
我看到一个相关问题 SmtpClient SendMailAsync sometimes never returns . 但是没有建议的修复对我有用。
当我尝试使用同步方法 SmtpClient.Send 时一切正常,应用程序永远不会挂起。
有人知道哪里出了问题吗?
最佳答案
我的同事向我指出 SmtpClient 实际上已经过时,Microsoft 建议不要使用它。
请参阅以下内容 link .
************ Update ***********
我已尝试按照链接中的建议使用 MailKit。 对于非异步 和异步 发送,相同的场景与MailKit 完美配合。
**********************************
关于c# - 发送大量邮件时 SmtpClient.SendMailAsync 方法挂起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54581992/