PHP Laravel のSMTPメール送信に躓いた件(Responce Code 535 5.7.8)

おはこんち。

ふゆこぱっちんです。

現在ふゆこぱっちん仕事でPHPをゴリゴリ書かされてます。勉強がてらに昨今流行りとかいうLaravelというフレームワークを触っているのですが、SMTPメール送信で躓いた件で備忘録/また同じ症状で悩む方々の支えになれれば(以下略)

[2021-12-16 16:17:54] local.ERROR: Failed to authenticate on SMTP server with username "*****@******.com" using 2 possible authenticators. 
Authenticator LOGIN returned Expected response code 235 but got code "535", with message "535 5.7.8 Error: authentication failed: UGFzc3dvcmQ6
". Authenticator PLAIN returned Expected response code 235 but got code "535", with message "535 5.7.8 Error: authentication failed: UGFzc3dvcmQ6

とのこと。要約するとsmtp認証で以下2つの認証方法を試したけど失敗したお(^ω^)的なことを書いてる。

ぐぐってみると皆Gmailのこととか、全く違うこととか書いてる。

いやいや、みんなどんだけGmailで引っかかってんねん。て程Gmail記事しかない。GMOとか外部メールを利用している人って案外少数派なのね。

.envファイルの確認なんか当たり前のようにやってるし、今更書くことではないよね。なんなら二重で・・・みたいなのも確認出来ない。

とまあ、前述したようにウチが仕事で使っていたメールサーバーはGMOのお名前メールだかを使っている。
GmailもGMOも関係なく、メール機能を使うにはLaravelアプリケーション直下の.envファイルを編集することになる。

MAIL_MAILER=smtp
MAIL_HOST=smtp.*******.com
MAIL_PORT=587
MAIL_USERNAME=****@******.com
MAIL_PASSWORD=*******
MAIL_ENCRYPTION=tls
MAIL_FROM_ADDRESS=hogehoge
MAIL_FROM_NAME=hoge

というふうな設定になっているはず。というか、悩んでここまでたどり着く人は大体のことは試したよね。

 

さて、問題はここにあった。どうやら、.envは禁則文字があるらしい。
GMOのお名前メールだかは、アカウント設定のパスワードにどうやら記号が必須らしく「& $ #」の3つのうち、どれか1つを設定しないと駄目みたい。

今回はこれがネックポイントとなっていた。

Laravelのsmtp認証の.envファイルに同様にコピペすると、「#」が弾かれます。
Laravelで用いられているのはSwift mailerというライブラリなので、もしかしたら周知の事実なのかもしれない。
エスケープ処理掛けても駄目。面倒臭いね。

ということで新規にメールアドレスを作り、パスワードは「&」を入れたものを登録し、コマンドラインからテスト。

cd /*Application Path*/
php artisan config:clear               //Laravelでは一度キャッシュをクリアしなければ.envファイルが読み込みされないみたい。
php artisan tinker
Psy Shell v0.10.8 (PHP 7.3.11 — cli) by Justin Hileman
>>>  Mail::raw('test mail',function($message) {$message->to('*****@*******.com')->subject('TEST!!');});
>>> null

となり、メール送信に成功した。

新規でメールアドレスを作る際はついでにメールのヘッダーで、ドメインのスパム評価度合いを確認すると良いって先輩が言ってた。

これにて48時間くらい悩まされた問題解決しました。未熟児過ぎて泣けてきた。

読了、ありがとうございました。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です