我有一个使用 PHPMailer 库发送电子邮件的 PHP 脚本。当我使用 PHP 命令在 SSH 中运行脚本时,它可以完美地发送电子邮件。但是,当对同一脚本的请求来自浏览器时,它会失败并给出以下错误。
2016-12-17 19:41:24 SMTP ERROR: Failed to connect to server: (0) 2016-12-17 19:41:24 SMTP connect() failed. https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting error
我不确定是什么导致它不适用于浏览器请求。
我的脚本在 AWS 上,我正在使用谷歌商务电子邮件。
下面是我的代码片段。
require_once 'PHPMailer-master/PHPMailerAutoload.php';
$mail = new PHPMailer();
$mail->IsSMTP();
$mail->SMTPAuth = true;
$mail->IsHTML(true);
$mail->CharSet = "text/html; charset=UTF-8;";
$mail->SMTPDebug = 2;
$mail->SMTPSecure = 'ssl';
$mail->Host = "smtp.gmail.com";
$mail->Port = 465;
$mail->Username = "google email address";
$mail->Password = "password";
$mail->From = $email_from;
$mail->FromName = "Name";
$mail->AddAddress($to);
$mail->Subject = $subject;
$mail->Body = $message;
$sent = $mail->Send();
我将不胜感激。谢谢。
编辑:我已经设法解决了“模块'curl'已经加载到第0行的未知”问题。服务器中有 2 个 PHP.ini 文件导致该问题。重命名一个 PHP.ini 解决了 curl 加载问题。
但我仍然无法使用nobody 用户发送电子邮件。但是我可以使用 root 用户发送电子邮件。
我注意到 WHM 中有一个配置为“防止“无人”发送邮件”。默认情况下,它表示不允许任何人发送电子邮件。所以,如果我把它关掉,我应该可以使用nobody发送电子邮件。但不知道为什么在关闭它后我仍然无法使用nobody 用户发送电子邮件。
已编辑:当我检查 apache 服务器日志时,我发现来自浏览器的每个请求都会生成以下错误。不确定这个错误是什么。我正在做这方面的研究。如果有人知道这个问题,我将不胜感激。谢谢你!******************错误日志****************************** * [Tue Dec 20 12:38:45.875892 2016] [ssl:error] [pid 913] (101)Network is unreachable: [client xx.xx.xx.xx:151] AH01974: could not connect to OCSP responder 'ocsp .comodoca.com' [2016 年 12 月 20 日星期二 12:38:45.875929] [ssl:error] [pid 913] AH01941: stapling_renew_response: 响应者错误 [2016 年 12 月 20 日星期二 12:38:46.181171] [ssl:error] [pid 919 ](101)网络无法访问:[客户端 xx.xx.xx.xx:848] AH01974:无法连接到 OCSP 响应者“ocsp.comodoca.com”[2016 年 12 月 20 日星期二 12:38:46.181211] [ssl:error ] [pid 919] AH01941:
感谢您的帮助!
您是否在 ssh 上以 root 身份运行 php?还是其他比 Web 服务器具有更高权限的用户?
如果您知道 Web 服务器以哪个用户身份运行,请尝试以该用户身份运行 php 脚本。您可以使用
phpinfo()
它来找出它正在运行的用户。以该用户身份运行脚本的一种方法如下...首先是 root,或者可以执行的用户sudo
,然后键入以下内容以更改为 Web 服务器用户:www-data
如果不同,显然用 Web 服务器用户的名称替换,bash
如果没有 bash,则用服务器上的有效 shell 替换。如果您有 Web 服务器用户的 bash 提示符,运行id
以检查您确实是正确的用户,然后尝试从该用户的命令行运行您的 PHP 脚本。如果它给出相同的错误,那么它必须是权限问题。如果它有效,那么至少你排除了它!如果确实是权限问题,请尝试以下操作:
启用权限。
最后,我成功地在我的 Cent 操作系统中由无人用户发送电子邮件。我不得不从 WHM 编辑两个设置。
更改设置的路径。
WHM -> 服务器配置 -> 调整设置 -> 在邮件选项卡下
默认情况下,以下两个设置为开。当我关闭它们时,它允许我以无人用户发送电子邮件。
将传出 SMTP 限制为 root、exim 和 mailman (FKA SMTP Tweak)
防止“无人”发送邮件
希望有人能从中受益。问候!