php 邮件功能有时有效,有时失败并告诉我 upgrade/update TLS。解决方案?
php mail function sometimes works, sometimes fails and tells me to upgrade/update TLS. Solution?
如标题所说。这是我的功能:
<?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
我在这上面花了很多时间,得到了比我聪明得多的人的帮助,但从来没有奏效。 PHPMailer 是要走的路。设置好,第一次尝试就成功了,此后一直有效。您甚至不必处理任何 ini 文件。
如标题所说。这是我的功能:
<?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
我在这上面花了很多时间,得到了比我聪明得多的人的帮助,但从来没有奏效。 PHPMailer 是要走的路。设置好,第一次尝试就成功了,此后一直有效。您甚至不必处理任何 ini 文件。