解決 PHP 5.6 以後 PHPMailer 透過 SSL 發信問題

PHP 5.6 在 OpenSSL 的部份有改變: http://php.net/manual/en/migration56.openssl.php

預設會去驗證 peer 及 peer name 造成寄信時一些 SSL 的連線會失敗。

因此若在 PHP 5.6 以後版本使用 PHPMailer 透過 SSL 傳送郵件,在傳送之前需修改 SSL 的設定:

$mail = new PHPMailer();

// ..... (中間省略) ..... //

if ($mail->SMTPSecure == 'ssl')
{
    $options = array(
            'ssl' => array('verify_peer' => false, 'verify_peer_name' => false)
    );

    $mail->smtpConnect($options);
}

if ($mail->Send()) return true; else return false;

※ 補充: PHPMailer 5.2.7 以後版本,才支援 smtpConnect 的 $options 設

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *