PHP邮件- OpenSSL错误

tjjdgumg  于 2023-01-12  发布在  PHP
关注(0)|答案(4)|浏览(271)

基于PHPMailer提供的示例,我有下面的脚本,

date_default_timezone_set('Etc/UTC');
require './PHPMailerAutoload.php';
$mail = new PHPMailer;
$mail->isSMTP();
$mail->SMTPDebug = 2;
$mail->Debugoutput = 'html';
$mail->Host = 'smtp.gmail.com';
$mail->Port = 587;
$mail->SMTPSecure = 'tls';
$mail->SMTPAuth = true;
$mail->Username = "myemail@example.com";
$mail->Password = "********";
$mail->setFrom('myMail@example.com', 'First Last');
$mail->addReplyTo('myEmail@example.com', 'First Last');
$mail->addAddress('toEmail@example.com', 'first last');
$mail->Subject = 'PHPMailer GMail SMTP test';
$mail->Body = "example";
$mail->AltBody = 'This is a plain-text message body';

if (!$mail->send()) {
echo "Mailer Error: " . $mail->ErrorInfo;
} else {
echo "Message sent!";
}

即使这和原来的例子完全一样,我也不能让它工作。
我得到的错误是

警告:流套接字启用加密():SSL操作失败,代码为1。OpenSSL错误消息:错误:14090086:SSL例程:SSL3_GET_SERVER_CERTIFICATE:证书验证在第344行上的/opt/lampp/htdocs/webmail_client_practise/class. smtp.php中失败SMTP错误:无法连接到SMTP主机。
**注意:**我的php.ini文件中的OpenSSL扩展已经打开。

mwkjh3gx

mwkjh3gx1#

这是因为你运行的是PHP 5.6,它正在验证你的证书,但是你的服务器提供了无效的证书,所以它失败了。PHPMailer和PHP在它们所做的事情上都是正确的-代码没有错。你可以修复你的邮件服务器,或者按照the troubleshooting guide中的建议去做,那就是:

$mail->SMTPOptions = array(
    'ssl' => array(
        'verify_peer' => false,
        'verify_peer_name' => false,
        'allow_self_signed' => true
    )
);

正如指南所说,* 除非万不得已,否则您不应这样做 * -这会危及您的安全。

ru9i0ody

ru9i0ody2#

我遇到了与最初问题完全相同的错误(是的,4年后),并能够通过在class.smtp.php中更改以下内容来解决它(如果存在的话,在/include/classes和/admin/include/classes中,否则只在PHPMailer主目录中)。
变更:

STREAM_CRYPTO_METHOD_TLS_CLIENT

致:

STREAM_CRYPTO_METHOD_TLSv1_2_CLIENT

它与更新的PHP版本中的TLS版本有关。
来源:https://forums.oscommerce.com/topic/410367-phpmailer-tls-12/

u5rb5r59

u5rb5r593#

我通过在ubuntu服务器上重新安装ca-certificates包解决了一个类似的问题:
sudo apt-get install --reinstall ca-certificates

dgsult0t

dgsult0t4#

太好了!
对我来说也很好用。
我更新了PHP版本www.example.com(邮件工作正常)和PHP版本5.6.40 - 52 + ubuntu20.04.1 + www.example.com +1(邮件获取失败) 5.5.9-1ubuntu4.14 (mail was working fine) to and PHP Version 5.6.40-52+ubuntu20.04.1+ deb.sury.org +1 (mail getting fail)
现在我刚刚更新了:-流_加密_方法_TLS_客户端

流加密方法TLSv1_2客户端
现在邮件工作正常。

相关问题