因此,我构建了一个使用PHPMailer发送邮件的应用程序。代码在我的本地机器上运行得很好,直到昨天它还在服务器上运行得很好。然而,现在当我在我的服务器上运行代码时,我得到:
消息无法成为sent.Mailer错误: SMTP connect()失败。https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting
我真的什么都试过了。我不明白为什么这不起作用。作为安装站点的用户,在服务器上,我可以telnet localhost 465
和telnet localhost 587
,这样服务器就可以正常工作了,而且不会阻塞到它自己的连接。
我能想到的唯一一件事是,这是一个Cpanel服务器,一定是apache/PHP发生了某种更新,导致某些东西不能正常工作。我知道问题不是邮件服务器的问题,也不是代码的问题(因为当我在本地机器上运行这段代码时,它是有效的),它只遗漏了服务器上的PHP/Apache配置……
有谁知道这可能是什么吗?
PS-我必须使用SSL,这是我唯一知道的我的服务器支持的东西,至少我从来没有幸运地使用过TLS或未加密。
下面是我的代码:
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相关...有人知道怎么解决这个问题吗?
发布于 2017-08-11 01:24:39
不久前,我们的一个在线网站也发生了完全相同的事情。花了几个小时对代码进行故障排除(我们也在使用PHPMailer ),但最终它是数据中心的防火墙更新。检查您的cPanel设置和/或向您的主机提供商开具票证。
如果您没有对代码进行任何更改,并且它突然停止工作,那么这很可能不是您的代码的问题。在我的例子中,是服务器防火墙阻止了出站连接。看看这个。
https://stackoverflow.com/questions/45619848
复制相似问题