ラブラドールレトリバー「忠太の心の声」

黒ラブ忠太と忠太パパのブログ。
最近は仕事の備忘録としてのエントリーが多いです。

PHP5.6 PHPMailerで、Warning: stream_socket_enable_crypto(): SSL operation failed with code 1.

2016-06-24 | Web・PC
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 です。


最新の画像もっと見る

2 コメント

コメント日が  古い順  |   新しい順
この1行を探していました。 (ヤット)
2016-08-23 17:57:26
配列の中身もわかって大体答えに近いところにいたのですが、「SMTPOptions」だとは、、、。

ありがとうございます。
ちなみに、PHP5.5まではこの記述不要だったようです。
返信する
Re:この1行を探していました。 (忠太パパ)
2016-08-23 21:09:28
お役に立てて、光栄です。
返信する

コメントを投稿