如何使用PHP邮件库在ubuntu NGINX服务器上配置SMTP设置?
我想通过使用PHPMailer库在Ubuntu Nginx服务器上配置SMTP Gmail中继,当我从本地主机运行脚本时,电子邮件成功发送,但当我部署它时,会显示这些错误如何使用PHP邮件库在ubuntu NGINX服务器上配置SMTP设置?,php,ubuntu,smtp,gmail,phpmailer,Php,Ubuntu,Smtp,Gmail,Phpmailer,我想通过使用PHPMailer库在Ubuntu Nginx服务器上配置SMTP Gmail中继,当我从本地主机运行脚本时,电子邮件成功发送,但当我部署它时,会显示这些错误 2020-12-04 11:27:10 SERVER -> CLIENT: 421 4.7.0 Try again later, closing connection. 2020-12-04 11:27:10 CLIENT -> SERVER: EHLO 1XX.1XX.9X.1XX 2020-12-04 11:2
2020-12-04 11:27:10 SERVER -> CLIENT: 421 4.7.0 Try again later, closing connection.
2020-12-04 11:27:10 CLIENT -> SERVER: EHLO 1XX.1XX.9X.1XX
2020-12-04 11:27:10 SERVER -> CLIENT:
2020-12-04 11:27:10 SMTP ERROR: EHLO command failed:
2020-12-04 11:27:10 SMTP NOTICE: EOF caught while checking if connected
SMTP Error: Could not connect to SMTP host.
SMTP Error: Could not connect to SMTP host.
Message could not be sent. Mailer Error: SMTP Error: Could not connect to SMTP host.
我认为有一些SMTP端口块,但我也试图禁用防火墙,但我仍然面临着同样的错误。这是我的SMTP代码
$mail->SMTPDebug = SMTP::DEBUG_SERVER; // Enable verbose debug output
$mail->isSMTP(); // Send using SMTP
$mail->Host = 'smtp.gmail.com'; // Set the SMTP server to send through
$mail->SMTPAuth = true; // Enable SMTP authentication
$mail->Username = 'XXXXXXX@gmail.com'; // SMTP username
$mail->Password = 'XXXXXXXXX'; // SMTP password
$mail->SMTPSecure = 'tls'; // Enable TLS encryption; `PHPMailer::ENCRYPTION_SMTPS` encouraged
$mail->Port = 587; // TCP port to connect to, use 465 for
$mail->setFrom('XXXXXXXXXX@gmail.com', 'Mailer');
$mail->addAddress('XXXXXXXX@gmail.com', 'Joe User'); // Add a recipient
$mail->addReplyTo('XXXXXXXX@gmail.com', 'Joe');
但该代码在本地计算机上运行良好,而不是在实时服务器上。该421错误意味着您的服务器的IP被google限制,可能是因为来自您的服务器或与您位于同一netblock中的其他服务器的垃圾邮件。在421错误之前它说了什么?服务器IP的反向DNS条目是否与您的EHLO名称匹配?它显示了相同的错误。是,我的服务器IP与EHLO IP匹配。我如何修复它?需要匹配的不是IP,而是名称:如果你做一个
挖掘你的主机.example.com
,它会给你一个IP;如果您随后主机
,它应该返回您开始时的名称。虽然这是您的服务器的一个问题,但PHPMailer没有正确地处理它。我将看一看。我只是为了测试目的而部署在服务器根文件夹上,所有这些在我的本地计算机上都可以正常工作,但在服务器上没有,因为它是一个新服务器,所以是否需要对SMTP、SSL和TLS进行任何配置。你也可以点击这个链接来检查错误你的代码和设置都很好,但是你的本地机器和服务器在不同的网络上,而谷歌并没有对它们一视同仁,这就是你的问题所在。我在PHPMailer的主分支中推出了一个修复程序,可以更好地处理此连接错误,但PHPMailer无法修复您的网络或Google对待您的方式。该421错误意味着您的服务器IP被Google限制,可能是因为来自您的服务器或与您位于同一netblock中的其他服务器的垃圾邮件。在421错误之前它说了什么?服务器IP的反向DNS条目是否与您的EHLO名称匹配?它显示了相同的错误。是,我的服务器IP与EHLO IP匹配。我如何修复它?需要匹配的不是IP,而是名称:如果你做一个挖掘你的主机.example.com
,它会给你一个IP;如果您随后主机
,它应该返回您开始时的名称。虽然这是您的服务器的一个问题,但PHPMailer没有正确地处理它。我将看一看。我只是为了测试目的而部署在服务器根文件夹上,所有这些在我的本地计算机上都可以正常工作,但在服务器上没有,因为它是一个新服务器,所以是否需要对SMTP、SSL和TLS进行任何配置。你也可以点击这个链接来检查错误你的代码和设置都很好,但是你的本地机器和服务器在不同的网络上,而谷歌并没有对它们一视同仁,这就是你的问题所在。我已经在PHPMailer的主分支中推出了一个修复程序,它可以更好地处理这个连接错误,但是PHPMailer不能做任何事情来修复你的网络或谷歌对待你的方式。