【发布时间】:2015-08-10 09:19:13
【问题描述】:
我正在使用以下代码通过 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,并且位于通过 LAN 连接到客户端计算机的同一域中,所以我认为没有网络问题,它应该是由客户端或服务器中的配置不匹配引起的。
有什么想法吗?
【问题讨论】:
-
为什么使用端口号
25? -
@suji:这个配置是服务器管理员给我的,你觉得连接25端口有问题吗?
-
我不这么认为。我只是要求澄清。在使用
SmtpClient时,它对我来说很安静 -
当您不需要时,只需断开与 SMTP 客户端的连接,并在需要时重新连接。正如 suji 所说,有一个超时值,所以你不妨考虑这一点并尽可能多地节省内存。
标签: c# email smtp timeout exchange-server