SMTPでメールが送信できない場合

この記事は公開日より7年以上経過しているため、現在の内容と異なる可能性があります。

いつもお世話になっております。a-blog cmsでSMTP経由でフォームなどのメール送信をしようとするとメールが送信できない場合があることが確認されています。

対象

  • a-blog cms Ver. 2.6.1.4 以下
  • php5.6.0以上
  • 管理ページ > コンフィグ > メール設定 > SMTP設定 が設定されている

原因

php5.6で SSL/TLS を使っている場合のピア証明書とホスト名の検証にデフォルトで対応したことにより、環境によって検証が失敗してメールが送信できない状態。

対策

  • 対策方法1: a-blog cms Ver. 2.7.0 以上にアップデートする(推奨)
  • 対策方法2: 以下のコード修正を行う

対策方法2

/php/PEAR/Net/Socket.php の 573行目付近のコメントを削除してください。

function enableCrypto($enabled, $type)
{
    if (version_compare(phpversion(), "5.1.0", ">=")) {
        if (!is_resource($this->fp)) {
            return $this->raiseError('not connected');
        }
        /**
        * ピア検証を無効化(php5.6暫定対応)
        */
        stream_context_set_option($this->fp, 'ssl', 'verify_peer', false);
        stream_context_set_option($this->fp, 'ssl', 'verify_peer_name', false);

        return @stream_socket_enable_crypto($this->fp, $enabled, $type);
    } else {
        return $this->raiseError('Net_Socket::enableCrypto() requires php version >= 5.1.0');
    }
}

同じタグ付けがされている記事