突然、PHPMailerからメールが送信できなくなって困ったの巻

自分記念日というウェブサービス兼アプリを公開しているのですが、ある日を境に通知のメールが届かなくなりました。

メール送信とPush通知は同じスクリプトで配信してるのですが、Push通知はちゃんと来ているので、cronが動いていないわけではない。

とすると、メール送信の部分で何か状況が変わってしまったということかな。たぶんメールサーバー側で何か変更があったのだろう。

メールはPHPMailerを使って送信しているので、まずは細かくエラーを取得できるようにプログラムを書き替える。とりあえず、デバッグレベルを3にして様子を見る。

するとこんなエラーを吐いているのが見て取れました。

SSL routines:ssl3_get_server_certificate:certificate verify failed

この情報を元に調べてみたところ、PHP5.6からSSLコンテキストオプションのverify_peerのデフォルト値がtrueに変更になったことが原因らしい。SMTPをSSL接続する際に、ローカルに置いた証明書と照合するみたいなんだけど、SMTPの証明書なんか持ってるはずもなく。

なので、そのオプションを元に戻してやります。

これでテスト送信してみたところ、無事に送信できました。

SMTP側の仕様変更ではなく、PHPのバージョンアップによる問題でした。

会社員(営業マン)してる時に勝手に会社の通販サイトを作って(HTMLからプログラミングまで全部自前)20年程運営していました。

今は独立してホームページに関するお仕事をしています。一般的なサイト制作はもちろんのこと、複雑なショッピングカートの制作までこなします。さらに、売れる通販サイトのノウハウを駆使して、サイト運営のお手伝いをいたします。

シェアする

  • このエントリーをはてなブックマークに追加

フォローする