はじめに
Laravelにて、Amazon SES経由でメールを送信するための設定をまとめました
環境
- PHP 7.3
- Laravel Framework 6.13.1
前提
Amazon SESの設定、IAMの設定は完了しているものとします
設定の流れ
- AWS sdkをインストールします
- .envファイルにIMAのアクセスキーID、シークレットアクセスキー、リージョンの設定を追記します
- キャッシュをクリアします
設定してみた
1. AWS sdkをインストールします
$ composer require aws/aws-sdk-php
2. .envファイルにIMAのアクセスキーID、シークレットアクセスキー、リージョンの設定を追記します
MAIL_DRIVER=ses
MAIL_FROM_ADDRESS=hoge@example.com
AWS_ACCESS_KEY_ID=【IAMのアクセスキーID】
AWS_SECRET_ACCESS_KEY=【IAMのシークレットアクセスキー】
AWS_DEFAULT_REGION=【Amazon SESのリージョン】
(設定不要な箇所は割愛しています)
キャッシュをクリアします
$ php artisan config:clear
補足
上記の設定でメール送信ができるようになりますが、.envの「AWS_ACCESS_KEY_ID」は他のAWSサービス(Amazon DynamoDB、Amazon SQS、S3)の設定でも使用しています。
そのため、例えばSESとS3を使用するアプリケーションの場合、キーが重複してしまいます。
Amazon SESは他のキーを使用したい場合、Amazon SESの設定がある箇所のenvのキーを変更します
config/services.php
'ses' => [
'key' => env('AWS_SES_ACCESS_KEY_ID'),
'secret' => env('AWS_SES_SECRET_ACCESS_KEY'),
'region' => env('AWS_SES_DEFAULT_REGION', 'ap-southeast-2'),
],
その後、.envに変更したキーを追記します
AWS_SES_ACCESS_KEY_ID=【IAMのアクセスキー】
AWS_SES_SECRET_ACCESS_KEY=【IAMのシークレットアクセスキー】
AWS_SES_DEFAULT_REGION=【Amazon SESを使うリージョン】
キャッシュをクリアを忘れずに
まとめ
キーの設定だけで、Amazon SESからメールが送信できるのは楽でいいですね!