我们有一个通过 PHPMailer 发送电子邮件的 Web 服务器,当向域中的电子邮件地址发送电子邮件时,此服务器运行正常。但是,当向域外的地址发送电子邮件时,它会失败并出现以下错误:
“SMTP 错误:以下收件人失败:[电子邮件保护]“
我尝试为 Web 服务器的 IP 地址设置接收连接器,并将其开放给匿名用户等,但仍然显示相同的错误。这是 Windows Server 2008。
任何帮助将不胜感激。
答案1
从技术上讲,可以授予任何第三方解决方案通过您的 Exchange 服务器中继电子邮件的权利(这里是一个非常古老但仍然有效的文档)。然后,Exchange 服务器应该按照现有 Exchange 用户的方式将电子邮件发送到互联网。
然而,有多个因素可能会阻止这种情况发生:
- 第三方解决方案的发件人电子邮件不正常
- 第三方环境不在您的 Exchange 服务器白名单中
- 您的 Exchange 服务器与第三方解决方案之间所需的端口未打开
- 您的配置需要 TLS 连接(例如 startTLS),但第三方解决方案不信任 SSL 证书(如果您希望排除故障,可以检查以下内容如何)。
- ...
解决该问题的最佳方法是打开第三方解决方案上的 telnet 会话并连接到您的 Exchange 服务器(如果你需要示例请参见此处)。然后尝试通过 telnet 发送电子邮件。根据 telnet 测试,您将收到一条 SMTP 指定的错误消息,您应该将其添加到您的帖子中,以便我们能够发现它。
答案2
我通过注释掉 PHP 代码中的 TLS 行来使其工作:
//$mail->SMTPSecure = 'tls';