AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 821346
Accepted
user_387909
user_387909
Asked: 2016-12-18 12:12:47 +0800 CST2016-12-18 12:12:47 +0800 CST 2016-12-18 12:12:47 +0800 CST

当请求来自浏览器时,SMTP connect() 失败

  • 772

我有一个使用 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:


感谢您的帮助!

email smtp sendmail php5 gmail
  • 2 2 个回答
  • 4240 Views

2 个回答

  • Voted
  1. bao7uo
    2016-12-18T13:26:10+08:002016-12-18T13:26:10+08:00

    您是否在 ssh 上以 root 身份运行 php?还是其他比 Web 服务器具有更高权限的用户?

    如果您知道 Web 服务器以哪个用户身份运行,请尝试以该用户身份运行 php 脚本。您可以使用phpinfo()它来找出它正在运行的用户。以该用户身份运行脚本的一种方法如下...首先是 root,或者可以执行的用户sudo,然后键入以下内容以更改为 Web 服务器用户:

    sudo -u www-data bash
    

    www-data如果不同,显然用 Web 服务器用户的名称替换,bash如果没有 bash,则用服务器上的有效 shell 替换。如果您有 Web 服务器用户的 bash 提示符,运行id以检查您确实是正确的用户,然后尝试从该用户的命令行运行您的 PHP 脚本。如果它给出相同的错误,那么它必须是权限问题。如果它有效,那么至少你排除了它!

    如果确实是权限问题,请尝试以下操作:

    sudo setsebool -P httpd_can_sendmail 1
    sudo setsebool -P httpd_can_network_connect 1
    

    启用权限。

    • 1
  2. Best Answer
    user_387909
    2016-12-21T05:32:02+08:002016-12-21T05:32:02+08:00

    最后,我成功地在我的 Cent 操作系统中由无人用户发送电子邮件。我不得不从 WHM 编辑两个设置。

    更改设置的路径。

    WHM -> 服务器配置 -> 调整设置 -> 在邮件选项卡下

    默认情况下,以下两个设置为开。当我关闭它们时,它允许我以无人用户发送电子邮件。

    1. 将传出 SMTP 限制为 root、exim 和 mailman (FKA SMTP Tweak)

    2. 防止“无人”发送邮件

    希望有人能从中受益。问候!

    • 1

相关问题

  • 如何绕过 ISP 的限制性电子邮件政策?

  • SharePoint 传入电子邮件出现“未知别名”错误

  • 电子邮件帐户的角色名称与人名

  • 如何在笔记本电脑上使用 Tobit David?[关闭]

  • 随行人员通过 VPN 连接到 Exchange 2007

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve