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 文件。