PHP5.5 から 5.6 にしたところ、PEAR MAIL を使っての外部 SMTP サーバーからの送信ができなくなった。
いろいろ試したがうまくいかず、PEAR MAIL を をあきらめ、PHPMailer を使って見た。
下記のサイトを参考にしました。
Phpmailerでスパム回避!Gmail等のSMTPを経由するPHPのメールフォーム解説
http://blog.s-giken.net/235.html
ここのサンプルを元にテストすると、エラー「SMTP connect() failed.」で送れませんでした。
Warning も出ていました。
Warning: stream_socket_enable_crypto(): SSL operation failed with code 1. OpenSSL Error messages: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed in ./PHPMailer/class.smtp.php on line 355
この Warning でググッてみたのですが、日本語のぺージが見つかりません。
たぶん、こう言っているのだろうと、下記を追加
$mail->SMTPOptions = array('ssl' => array('verify_peer' => false, 'verify_peer_name' => false, 'allow_self_signed' => true));
見事、メールを送信することができました。
PEAR MAIL では、STARTTLS がうまくいってなかったようなので、それもこの設定でうまくいくような気がします。
(記述の仕方がわかりませんが・・・)
ちなみに OS は CentOS7 です。
いろいろ試したがうまくいかず、PEAR MAIL を をあきらめ、PHPMailer を使って見た。
下記のサイトを参考にしました。
Phpmailerでスパム回避!Gmail等のSMTPを経由するPHPのメールフォーム解説
http://blog.s-giken.net/235.html
ここのサンプルを元にテストすると、エラー「SMTP connect() failed.」で送れませんでした。
Warning も出ていました。
Warning: stream_socket_enable_crypto(): SSL operation failed with code 1. OpenSSL Error messages: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed in ./PHPMailer/class.smtp.php on line 355
この Warning でググッてみたのですが、日本語のぺージが見つかりません。
たぶん、こう言っているのだろうと、下記を追加
$mail->SMTPOptions = array('ssl' => array('verify_peer' => false, 'verify_peer_name' => false, 'allow_self_signed' => true));
見事、メールを送信することができました。
PEAR MAIL では、STARTTLS がうまくいってなかったようなので、それもこの設定でうまくいくような気がします。
(記述の仕方がわかりませんが・・・)
ちなみに OS は CentOS7 です。
ありがとうございます。
ちなみに、PHP5.5まではこの記述不要だったようです。