繁体   English   中英

SmtpClient.Send将发送消息AND超时

[英]SmtpClient.Send will send a message AND timeout

我正在更新一些旧的代码以与SQL集成。 我为一家偶尔会发送大量电子邮件的公司工作,这些电子邮件极大地减慢了邮件服务器的速度。 我们希望将电子邮件排入数据库,如果它们开始构建的话。 在测试代​​码的一些更改时,我注意到我会收到电子邮件,客户端仍然会超时。 这会导致问题,因为客户端会在队列中设置电子邮件,稍后我会在另一个服务尝试清理数据库时收到它。

SmtpClient emailClient = new SmtpClient(Settings.SmtpServer);
emailClient.Timeout = 100;

bool sent = false;
try
{
    using (Impersonate imp = DA.GetImpersonator())
    {
        emailClient.Send(message);
        sent = true;
    }
}
catch (SmtpException) { }
finally
{
    if (sent)
    {
        email.IsSent = true;
        DA.Save(email);
    }
}

在10次测试中,9次超时,1次成功; 我收到了7封电子邮件。

从查看规范来看,超时仅承诺该方法将在该时间内返回,而不是发送已停止。

如果您需要发送多封电子邮件,请考虑使用SendAsync方法并订阅SendCompleted事件以确定发送电子邮件的成功/失败。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM