【发布时间】:2022-01-24 20:46:24
【问题描述】:
正如标题所说。这是我的功能:
<?php
//---------------EMAIL PORTION--------------------
error_reporting(E_ALL);
ini_set('display_errors', 'On');
set_error_handler("var_dump");
$from_email = 'email2@website.com';
$to = 'email@website.com';
$subject = "XXXXXXXXXXX";
$message =
'
<html>
<body>
<div style="padding:10px 20px;">
<h3>Hello Person, </h3>
<img src="###########"/>
</div>
</body>
</html>
';
// Headers
$headers = "MIME-Version: 1.0\r\n"; // Defining the MIME version
$headers .= "Content-type: text/html\r\n";
$headers .= "From: \"XXXXXXXXXXXXXX\" <".$from_email.">\r\n"; // Sender Email
$headers .= "Reply-To: " . $from_email . "\r\n";
$sentMailResult = mail($to,$subject,$message,$headers);
if($sentMailResult) {
echo "Email Sent Successfully: ", $sentMailResult;
}
else {
die("Sorry but the email could not be sent, Please go back and try again!");
}
有时它有效,但大多数时候无效。我将在浏览器的 php 页面上,我会刷新它,它会说电子邮件发送成功。然后我会刷新它,它会说失败。我正在为我的服务器使用 Xampp。当它失败时,我在服务器日志中得到以下信息:
sendmail: Error during delivery: TLS 1.0 and 1.1 are not supported. Please upgrade/update your client to support TLS 1.2. Visit https://aka.ms/smtp_auth_tls. [prod.outlook.com]
然后当它工作时,我的邮件日志在电子邮件信息之后有这个:
250 2.0.0 OK
QUIT
我已经做了所有我能想到的事情,而且我很困惑。我尝试将此行添加到我的 httpd-ssl.conf 文件中:SSLProtocol all +TLSv1.2 但它似乎没有帮助。我不明白为什么它有时可以工作,但不能一直工作。我的 php.ini 邮件功能应该正确设置,它链接到一个 sendmail 文件夹,并且那里的 ini 也应该正确设置。
任何帮助将不胜感激。
更新:
Apache 版本:2.4.51
PHP 版本:8.0.13
OpenSSL 版本:1.1.1l
【问题讨论】:
-
尝试
SSLProtocol all -SSLv2 -SSLv3 -TLSv1禁用旧版本 -
SSLProtocol 设置与此处无关。这是关于(Apache)Web 服务器接受的连接。您遇到的问题是源自 PHP 脚本的连接。看起来您的 PHP TLS 堆栈不支持 TLS 1.2,这可能与非常(非常)旧的系统有关。 TLS 1.2 支持于 2012 年添加到 OpenSSL(PHP 使用的底层堆栈)中。请更新您的系统,它可能还有其他问题。
-
@SteffenUllrich 我使用的是 Windows 10 Pro PC,并且所有 Windows 更新都已应用。 PC 可能已经使用了 10 年左右,但不确定这是否有任何影响。 Xampp 安装是全新的,具有 Apache 版本 2.4.51 和 PHP 版本 8.0.13。当您说“系统”时,您究竟是什么意思?
-
@aynber 我将它添加到 httpd-ssl.conf 文件中,但在重新启动 Apache 后仍然出现同样的错误:
Error during delivery: TLS 1.0 and 1.1 are not supported -
@justdoingmyjob:在这种情况下,PHP 使用的可能是旧的 openssl 版本。检查
phpinfo()安装了哪个版本。必须至少为 1.0.1 才能支持 TLS 1.2。