Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用PHP邮件库在ubuntu NGINX服务器上配置SMTP设置?_Php_Ubuntu_Smtp_Gmail_Phpmailer - Fatal编程技术网

如何使用PHP邮件库在ubuntu NGINX服务器上配置SMTP设置?

如何使用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

我想通过使用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: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不能做任何事情来修复你的网络或谷歌对待你的方式。