[英]How to determine the time it took SmtpClient.send to send the message?
[英]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.