PHPMailerでエラーが出た話です。
現在PHPMailerのgithub最新はPHP7対応なので5.6で使いたい人は旧版(PHPMailer 5.2-stable)をダウンロードしましょう。
アタリをつけてから解決まで30分くらいだった。先人たちの記録にはいつも助けてもらっています。ありがとうございます。
特段苦労もせずlocalhostからすんなりメール送信できたのに開発用サーバで動作確認すると送信できない。なんでじゃー。SMTPサーバはAmazon SES。
とにかくデバッグレベルを上げてログを表示すると下記のエラー。
Connection failed. Error #2: stream_socket_enable_crypto(): SSL operation failed with code 1. OpenSSL Error messages:error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed [/xxx/PHPMailer/class.smtp.php line 375]
このあたりの記事でアタリをつけて
そのあと理由を探します
どうも開発用サーバがSSLではない(これもカセキ?と言われそうな・・・)のが原因のようです。オレオレ証明書ですらないので。でもなぜlocalhostはいいのだろう?
結局コードに下記を追加することで送れました。
$mail->SMTPOptions = array( 'ssl' => array( 'verify_peer' => false, 'verify_peer_name' => false, ) );
ちなみにAmazon SESの公式は既にPHPMailer旧版のサンプルコードなんてないから要注意です。