在c#中使用SMTP发送电子邮件偶尔会超时

本文关键字:电子邮件 偶尔 超时 SMTP | 更新日期: 2023-09-27 17:50:54

我使用以下代码通过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);
}

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

在c#中使用SMTP发送电子邮件偶尔会超时

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

SmtpClient.TimeOut的默认值为100 seconds(10000MS)。但也可以通过程序设置,因为它是一个具有setget的属性。

public int Timeout { get; set; }

获取或设置一个值,该值指定同步Send调用超时后的时间量。因此,您可以通过increasing尝试超时值,因为您的方法在某些情况下失败(抛出异常)。参考