メールが送信されない
メール配信の問題に関するステップバイステップのトラブルシューティングです。
ステップ 1:基本を確認する
# .env の SMTP 設定を確認
grep MAIL_ .env
以下を確認します:
MAIL_MAILER=smtp(logまたはnullではないこと)MAIL_HOSTが正しいことMAIL_PORTが正しいこと(TLS は 587 、SSL は 465)MAIL_USERNAMEとMAIL_PASSWORDが入力されていることMAIL_ENCRYPTION=tls(またはssl)
ステップ 2:管理パネルでテストする
- Admin > Settings > Email に移動します
- Send Test Email をクリックします
- 失敗した場合はエラーメッセージを確認します
ステップ 3:コマンドラインでテストする
php artisan tinker
Mail::raw('Test', function ($m) {
$m->to('[email protected]')->subject('Test');
});
エラーは storage/logs/laravel.log で確認してください。
よくある問題
| 問題 | 解決策 |
|---|---|
| 「Connection timed out」 | ポート 587/465 がホスティングでブロックされています。ポート 2525 を試すか、ホストに問い合わせてください。 |
| 「Authentication failed」 | ユーザー名/パスワードが間違っています。Gmail の場合はアプリパスワードを使用してください。 |
| 「Certificate verify failed」 | 古い PHP。config/mail.php のメーラーオプションで 'verify_peer' => false を試してください。 |
| メールがスパムに入る | SPF、DKIM、DMARC の DNS レコードを追加してください。 |
| メールが遅延する | QUEUE_CONNECTION=database を使用していますか?キューワーカーが動作していることを確認してください。 |
| エラーはないがメールが届かない | MAIL_MAILER=log を使用していませんか?メールはログに記録されており、送信されていません。storage/logs/laravel.log を確認してください。 |
デバッグ用の MAIL_MAILER=log の使用
.env で MAIL_MAILER=log を設定すると、実際に送信する代わりにすべてのメールをログファイルにキャプチャします。実際の受信者に影響を与えずにメールの内容を確認するのに便利です。