【PHP5.6以上】 メール設定について SMTPのhostがsslの場合に注意
PHPの各バージョンのサポート期間
ずばり、下記に掲載されているのですが、最近だと2016年07月10日にPHP5.5のサポートが終了しています。
ということで、この夏にPHP5.6やPHP7.0へのバージョンアップをする方や検討中の方も多いと思います。
ちなみに、5.6のサポートは2016年12月31日(アクティブ)2018年12月31日(セキュリティ)。
7.0のサポートは2017年12月3日 (アクティブ)2018年12月3日 (セキュリティ)。
バージョンアップによってメールが飛ばない可能性がある?
hostにsslを指定、かつメールサーバに対してSSLサーバ証明書を発行していない場合になります。
PHPのマニュアルに書いてあります。
peer_fingerprint と verify_peer_name が追加されました。 verify_peer のデフォルトが TRUE に変わりました。
引用:PHP: SSL コンテキストオプション - Manual
SSLサーバ証明書の検証をデフォルトで行うようになりましたと書いてあります。
対応方法
テストサーバであったり、SSLサーバ証明書がない場合もあると思います。
このような場合、verify_peerをfalse、verify_peer_nameをfalse、自己証明の証明書の許可に関するallow_self_signedをtrueに設定します。
書き方については、環境にもよって変わるかと思います。
いくつか参考にしていますが、特に参考になった二つの記事を掲載しておきます。
CakeEmail、PHPMailerです。
CakeEmailの書き方
PHPMailerの書き方
パッと見、外国サイトっぽいですけど、日本人の方が日本語で書かれているものです。