gpt4 book ai didi

c# - 为什么 SmtpClient.SendAsync 挂起?

转载 作者:太空宇宙 更新时间:2023-11-03 12:41:26 25 4
gpt4 key购买 nike

我正在使用 SmtpClient.SendAsync (C#) 在 ASP.NET Web 应用程序和服务中发送电子邮件。 Web 应用程序/服务使用 IIS 8 在 Windows Server 2012 R2 上运行。

有时,对 SendAsync 的调用会挂起,并且不会出现异步发送邮件消息的情况,因此调用线程会阻​​塞。这种行为似乎是零星的。我无法在测试环境中复制该问题。由于超时为 60 秒(我正在使用 SendAsync 因为这个原因,所以客户端不会遇到任何时间,因为调用 web 方法发送电子邮件时,这尤其有问题延迟)。

这是我的代码片段。

SmtpClient client;
MailMessage msg;

public void SendMail()
{
try
{
client = new SmtpClient("smtpAddress@mydomain.com");
msg = new MailMessage();
msg.Subject = "Test";
msg.Body = "This is the body";
msg.From = "noreply@example.com";
msg.To.Add("me@example.com");

client.SendCompleted += new SendCompletedEventHandler(sendCompletedCallback);
client.SendAsync(msg, "Test");
}
catch (Exception ex)
{
// Log error
}
}

private void sendCompletedCallback(object send, AsyncCompletedEventArgs e)
{
if (e.Error != null)
{
// Log error
}
else if (e.Cancelled)
{
// Log cancellation
}
else
{
// Log success
}

client.Dispose();
msg.Dispose();
}

为什么对 SendAsync 的调用有时会挂起并阻塞调用线程?

最佳答案

请检查以下链接, https://msdn.microsoft.com/en-us/library/x5x13z6h(v=vs.110).aspx可能有两种情况,要么没有等待电子邮件传输完成就尝试发送另一封电子邮件或者收件人无效

关于c# - 为什么 SmtpClient.SendAsync 挂起?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38879464/

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