首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >PHPMailer突然不工作了

PHPMailer突然不工作了
EN

Stack Overflow用户
提问于 2017-08-11 01:16:39
回答 1查看 2.8K关注 0票数 1

因此,我构建了一个使用PHPMailer发送邮件的应用程序。代码在我的本地机器上运行得很好,直到昨天它还在服务器上运行得很好。然而,现在当我在我的服务器上运行代码时,我得到:

消息无法成为sent.Mailer错误: SMTP connect()失败。https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting

我真的什么都试过了。我不明白为什么这不起作用。作为安装站点的用户,在服务器上,我可以telnet localhost 465telnet localhost 587,这样服务器就可以正常工作了,而且不会阻塞到它自己的连接。

我能想到的唯一一件事是,这是一个Cpanel服务器,一定是apache/PHP发生了某种更新,导致某些东西不能正常工作。我知道问题不是邮件服务器的问题,也不是代码的问题(因为当我在本地机器上运行这段代码时,它是有效的),它只遗漏了服务器上的PHP/Apache配置……

有谁知道这可能是什么吗?

PS-我必须使用SSL,这是我唯一知道的我的服务器支持的东西,至少我从来没有幸运地使用过TLS或未加密。

下面是我的代码:

代码语言:javascript
运行
复制
require("vendor/autoload.php");
$mail = new \PHPMailer;
// set up mail settings
$mail->isSMTP();
$mail->Host = 'my.host.com';
$mail->SMTPAuth = true;
$mail->Username = 'username';
$mail->Password = 'password';
$mail->SMTPSecure = 'ssl';
$mail->Port = 465;

$mail->Debugoutput = function($str, $level) {
    $GLOBALS['debug'][] = $Host . " - " . $str . " - " . $level;
};

$mail->SMTPDebug = 2;
$mail->CharSet = "UTF-8";
$mail->setFrom(.....);
$mail->addAddress(.....);
$mail->isHTML(true);
$mail->Subject = 'Here is the subject';
$mail->Body    = '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional //EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><body>This is the HTML message body <b>in bold!</b></body></html>';

if(!$mail->send()) {
    echo 'Message could not be sent.';
    echo 'Mailer Error: ' . $mail->ErrorInfo;
} else {
    echo 'Message has been sent';
}

编辑:

我将调试级别更改为3(用于连接调试,derp),并得到以下结果:

主机字符串(88)“-连接:打开到ssl:// =>:465,timeout=300,options=array ()- 3”

SSL字符串(291)“-连接失败。错误#2: stream_socket_client():SSL操作失败,代码为% 1。错误消息:错误:14090086:SSL routines:ssl3_get_server_certificate:certificate验证失败/path/to/vendor/phpmailer/phpmailer/class.smtp.php 1=>第294-3行”

加密字符串(175)“-连接失败。错误#2: stream_socket_client():无法启用加密/path/to/vendor/phpmailer/phpmailer/class.smtp.php行294 - 3”

3=>字符串(215)“-连接失败。错误#2: stream_socket_client():无法连接到ssl://my.host.com:465 (未知错误)第294-3行”

SMTP字符串(52)“- 4=>错误:无法连接到服务器:(0) - 1”

5=>字符串(89)“- SMTP connect()失败。https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting - 3”}

所以我是对的,它与SSL相关...有人知道怎么解决这个问题吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-08-11 01:24:39

不久前,我们的一个在线网站也发生了完全相同的事情。花了几个小时对代码进行故障排除(我们也在使用PHPMailer ),但最终它是数据中心的防火墙更新。检查您的cPanel设置和/或向您的主机提供商开具票证。

如果您没有对代码进行任何更改,并且它突然停止工作,那么这很可能不是您的代码的问题。在我的例子中,是服务器防火墙阻止了出站连接。看看这个。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45619848

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档