在 C# 中使用 SMTP 发送电子邮件有时会超时

Ehs*_*hmi 5 c# email exchange-server timeout smtp

我正在使用以下代码通过 Windows 域中的 MS Exchange 服务器发送电子邮件:

SmtpClient client = new SmtpClient();
client.Port = 25;
client.Host = "mail.mydomain.com";
client.EnableSsl = false;
client.Timeout = 60000;
client.DeliveryMethod = SmtpDeliveryMethod.Network;
client.Credentials = new System.Net.NetworkCredential("sender@mydomain.om", "password");
client.UseDefaultCredentials = false;

MailMessage mm = new MailMessage("sender@mydomain.com", "receiver@anotherdomain.com", "test", "test");
mm.DeliveryNotificationOptions = DeliveryNotificationOptions.OnFailure;

try
{
      client.Send(mm);
      MessageBox.Show("Success");
}
catch (Exception ex)
{
      MessageBox.Show("Faild: "+ex.Message);
}
Run Code Online (Sandbox Code Playgroud)

在大多数情况下,这可以正常工作并且发送电子邮件没有问题,但是在每 2 或 3 次成功发送后,它会因超时错误而失败 1 或 2 次(大约 10 秒后超时,这远小于客户端超时指定的 60 秒在我的代码中)。
我的邮件服务器是 MS Exchange & 位于通过 LAN 连接到客户端机器的同一个域中,所以我认为没有网络问题 & 它应该是由客户端或服务器中的配置不匹配引起的。
任何的想法?

小智 0

SmtpClient 类没有 Finalize 方法,因此应用程序必须调用 Dispose 来显式释放资源。如果没有帮助,您可以检查exchange服务器上有关连接限制的设置。