公式ドキュメントの項番7で、__IPアドレス認証のみ__を選択した場合
[認証] セクションで、以下のいずれかまたは両方のチェックボックスをオンにして認証方法を設定します。
https://support.google.com/a/answer/2956491?hl=ja
正しい書き方
config/app.php
'EmailTransport' => [
'default' => [
'className' => 'Smtp',
'host' => 'smtp-relay.gmail.com',
'port' => 25,
'timeout' => 30
],
],
ダメな書き方
config/app.php
'EmailTransport' => [
'default' => [
'className' => 'Smtp',
'host' => 'smtp-relay.gmail.com',
'port' => 25,
'timeout' => 30,
'username' => '',
'password' => ''
],
],
解説
CakePHP3はusername
とpassword
カラムが存在すると、
LOGIN AUTHコマンドをSMTPサーバに送信します(ver 3.1.5まで確認済み)。
https://github.com/cakephp/cakephp/blob/master/src/Mailer/Transport/SmtpTransport.php
そのため認証不要であるsmtp-relay.gmail.com
が落ち、
MailオブジェクトがCake\Network\Exception\SocketException
を吐きます。
パスワード認証不要のSMTPサーバに対して接続しようとして失敗する場合に同様の手順が使えるでしょう。