LaravelからSESを使ってみた

SESに関する説明はこちらがざっくりしていてわかりやすかったです。
実際のSES設定及びLaravelの設定はこちらを参考にしました。
私がSESでの送信を試したLaravel11の練習用リポジトリのPRはこちら
https://github.com/acaibawl/laravel11_lesson/pull/9
メモ
- SESの左メニュー「設定を始める」から、メールアドレスを検証、送信ドメインを検証、テストEメールの送信、本番アクセスをリクエストの順に試す
- AWSのサポートから、sesをどのような用途で使うのか確認したい旨のメッセージが来るので、aws上のメッセージサポート画面で返信する
- 「主にアプリケーション開発の学習用として、アプリケーションからの通知用に使うことを想定しています。 送信数はそれほど多くならないかと思います。」という内容でひとまず解除してもらえました。
- SESアクセスができるIAMアカウントを作成
- composer require aws/aws-sdk-php でaws操作用のsdkをインストール
- config/services.phpのsesのkeyを他のawsサービスと被らない様に修正
- .envファイルに設定追加・修正
- MAIL_FROM_ADDRESSを修正
- 追加
- AWS_SES_ACCESS_KEY_ID=xxxxxxxxxxxxxxxxxxxxxxxxxx
- AWS_SES_SECRET_ACCESS_KEY=xxxxxxxxxxxxxxxxxxxxxxxxxx
- AWS_SES_DEFAULT_REGION=us-west-2(オレゴン)
- 追加
- MAIL_MAILER=ses に変更
- MAIL_FROM_ADDRESSのdomainより前の部分は、sesなら存在しない「noreply」等でもメール送信できる
- MAIL_FROM_ADDRESSを修正
- tinkerでメール送信
- Mail::raw('test from laravel & ses', function($message) { $message->to('宛先アドレス')->subject('test'); });
その他
以前はSESで送信したメールの到達未到達の確認やどこに送ったかを確認するにはS3を使ってログ出力する必要があったようです。
あの人へSESで送ったメールってどうなったんだろう?どうやれば確認出来るのか ~AWS100本ノック~ 10/100
ですが、今はVirtual Deliverability Managerという機能が追加されており、若干の料金はかかるけど有効にすることでメール送信のログが見れるようになりました。
[アップデート]Amazon SESのVirtual Deliverability Managerでメール個別の送信イベントが閲覧できるようになりました