0

我面临着使用如下编码通过应用程序发送的 SMTP 邮件问题

SmtpClient SMTPServer = new SmtpClient("smtp.office365.com"); SMTPServer.UseDefaultCredentials = false; SMTPServer.Credentials = new System.Net.NetworkCredential("xxx@xxx.org","xxxxx") SMTPServer.Port = 587; SMTPServer.EnableSsl = true;

所以两年前一直在使用这种方法,直到最近我们面临电子邮件无法间歇性地发送错误消息“Smtp 错误:发送邮件失败”。有时,平均每天只能发送 12 封电子邮件。此外,应用程序中的发件人电子邮件地址使用正确的凭据登录名和密码处于活动状态。

我检查了我们的 Windows 2008 R2 服务器并在服务器上使用我们禁用的防火墙进行了测试。问题仍然存在。服务器也没有补丁更新。

与身份验证类型级别有什么关系吗?还是某些通信协议冲突?如何进一步检查以确定原因?我们的防火墙已经允许端口 587 发送出去。

4

1 回答 1

0

可能有很多问题需要检查。您说应用程序正在将电子邮件作为“客户端”发送到 Exchange 365 SMTP 服务器以继续发送,这就是示例的样子。

  1. 检查 Exchange 是否拒绝该请求。Microsoft 对直接连接的应用程序客户端可能非常挑剔。查看日志。

  2. 检查您的电子邮件应用程序客户端是否使用 TLS 1.2 或更高版本。许多 SMTP 服务器会拒绝低于该级别的请求。

  3. Exchange 可能坚持使用 STARTTLS 来协商凭据,因此请检查这是否是问题所在。

  4. 如果应用程序客户端拒绝请求,请检查它是否在 MS Exchange 365 中列入白名单。

  5. 检查您连接的用户是否有权接受来自远程客户端的连接。我经常将其锁定以防止暴力密码攻击。

通常我会先在命令行上测试所有这些。为您的操作系统获取电子邮件客户端,例如:

sendemail-1.56 by Brandon Zehm <caspian@dotconf.net>

这非常擅长发起与远程服务器的连接。从您的应用程序客户端电子邮件服务器进行测试,看看会发生什么。

于 2021-10-27T09:32:40.747 回答