PHP发送带有SMTP错误的电子邮件:警告:stream_socket_enable_crypto():语言字符串加载失败:tls

Posted

技术标签:

【中文标题】PHP发送带有SMTP错误的电子邮件:警告:stream_socket_enable_crypto():语言字符串加载失败:tls【英文标题】:PHP sending email with SMTP error : Warning: stream_socket_enable_crypto():Language string failed to load: tls 【发布时间】:2019-06-10 04:18:44 【问题描述】:

我会在 php 中使用 SMTP 发送电子邮件。我使用 Gmail SMTP。

我的代码:

<?php

require 'PHPMailer_5.2.0/class.phpmailer.php';

$mail = new PHPMailer;

$mail->IsSMTP();                                      // Set mailer to use SMTP
$mail->Host = 'smtp.gmail.com';                 // Specify main and backup server
$mail->Port = 587;                                    // Set the SMTP port
$mail->SMTPAuth = true;                               // Enable SMTP authentication
$mail->Username = 'egenthiers.80@gmail.com';                // SMTP username
$mail->Password = 'XXXX';                  // SMTP password
$mail->SMTPSecure = 'tls';                            // Enable encryption, 'ssl' also accepted

$mail->From = 'egenthiers.80@gmail.com';
$mail->FromName = 'Egen Can';
$mail->AddAddress('egenthiers.63@gmail.com', 'Egen Can');  // Add a recipient

$mail->Ishtml(true);                                  // Set email format to HTML

$mail->Subject = 'Here is the subject';
$mail->Body    = 'This is the HTML message body <strong>in bold!</strong>';
$mail->AltBody = 'This is the body in plain text for non-HTML mail clients';

if(!$mail->Send()) 
   echo 'Message could not be sent.';
   echo 'Mailer Error: ' . $mail->ErrorInfo;
   exit;


echo 'Message has been sent';
?>

当我运行这段代码时。我收到此错误:

警告:stream_socket_enable_crypto():SSL 操作失败并出现代码 1. OpenSSL错误信息:error:14090086:SSLroutines:ssl3_get_server_certificate:certificate verify failed in C:\xampp\htdocs\xxx\PHPMailer_5.2.0\class.smtp.php 上线 200 语言字符串加载失败:tls 消息无法加载 sent.Mailer 错误:无法加载语言字符串:tls SMTP 服务器 错误:

我该如何解决这个问题?

我需要你的帮助。

【问题讨论】:

上传到服务器试试这个。 默认情况下,localhost 不会发送电子邮件,除非您对其进行配置 ***.com/questions/30610387/… @AbdullaNilam 我做到了。但是没用 PHPMailer generates PHP Warning: stream_socket_enable_crypto(): Peer certificate did not match expected的可能重复 【参考方案1】:

错误一:

require 'PHPMailer_5.2.0/class.phpmailer.php';

您正在使用一个非常非常旧的 PHPMailer 版本,该版本存在漏洞并且存在许多安全漏洞。 Upgrade immediately.

错误 2:

OpenSSL Error messages: error:14090086:SSL routines:ssl3_get_server_certificate:
certificate verify failed 

不是searching for this error message 意味着您还没有找到很多很多答案和documentation 来解决这个确切的问题。

文档对此进行了广泛的介绍。您的服务器的 CA 证书包很可能已过时(尤其是考虑到您使用的是旧版本的 PHPMailer,并且您的代码基于一个非常旧的示例)。

【讨论】:

你是正义的。我改变了这个 '$mail->SMTPSecure = "tls";'到ssl。我解决了这个错误。但我得到了其他错误:) 这个错误:'警告:fputs() 期望参数 1 是资源,整数在 C:\xampp\htdocs\xxx\PHPMailer_5.2.0\class.smtp.php 第 215 行 SMTP 错误中给出:无法进行身份验证。无法发送邮件。Mailer 错误:SMTP 错误:无法验证'如果我下载新的 PHPMailer,问题会解决吗? ssl 端口 587 上的模式将不起作用,如果您阅读过我指出的文档,您就会知道。我不会解决旧版本的问题。

以上是关于PHP发送带有SMTP错误的电子邮件:警告:stream_socket_enable_crypto():语言字符串加载失败:tls的主要内容,如果未能解决你的问题,请参考以下文章

问题:使用 gmail 服务器发送电子邮件

SendMail 错误:无法使用 gmail 帐户发送电子邮件? XAMPP

将表格详细信息发送到电子邮件

带有 XAMPP 的 SMTP 服务器?

PHP使用谷歌应用smtp发送电子邮件[重复]

发送 AUTH LOGIN 命令失败。错误:无法使用 PHP SMTP 发送电子邮件。您的服务器可能未配置为使用此方法发送邮件