Amazon SESで独自ドメインを使ってno-replyメールをLambdaから送信する
Amazon SES(Simple Email Service)は、Eメールを送信するサービスです。
これと独自ドメインを組み合わせて、no-reply@example.com
のようなメールアドレスからメールを送信してみました。
なお、メールの送信処理はLambdaで行っています。
Amazon SESのメール送信について
不正や悪用を防止するため、Amazon SESの初期状態はサンドボックスになっています。
- 送信元:
- サンドボックス内:検証済であること(メールアドレス or ドメイン)
- サンドボックス外:検証済であること(メールアドレス or ドメイン)
- 送信先:
- サンドボックス内:検証済のメールアドレスのみ
- サンドボックス外:任意のメールアドレス(※)
※携帯キャリアに届かない(相性が悪い)などの可能性はあります。
本記事では、下記の組み合わせでメール送信を試してみました。
- 送信元:サンドボックス内(検証済のドメイン)
- 送信先:サンドボックス内(検証済のメールアドレス)
Amazon SESで独自ドメインを設定する
Amazon SESにアクセスする
Amazon SESにアクセスします。東京リージョンは無いため、どこか適当に選びます。
ドメイン検証の準備をする
左側メニューにある「Domains」を選択し、「Verify a New Domain」を選択します。
所持しているドメインを入力し、Generate DKIM Settings
にチェックを入れて「Verify This Domain」を選択します。
ドメイン検証に必要な情報が表示されました。
DKIM Record Set
の部分ですが、実は3つあるので要注意です(ハマった)
ドメインの検証をする(DNSレコードの設定)
DNSサーバの設定画面を開き、さきほどのドメイン検証に必要な情報(4つ)を追加していきます。下記の画像はNetlifyのDNS設定画面の様子です。
Email Receiving Record
今回はメール送信を試したいため、メール受信用の設定は行いませんでした。
ドメイン検証が終わるのを待つ
しばらく待って次のようになればOKです。今回は5分ぐらい待ちました。
Amazon SESで送信先メールアドレスの検証をする
左側メニューにある「Email Addresses」を選択し、「Verify a New Email Address」を選択します。 続いて送信先メールアドレスを入力します。
「Verify This Email Address」を選択すると検証用のメールが届くので、その中のURLをクリックして検証完了です。
Lambdaでメールを送信する
Lambdaのコード
次のLambdaコードを作成します。Lambdaの権限にはarn:aws:iam::aws:policy/AmazonSESFullAccess
を追加しています。
送信してみる
Webコンソール上でLambdaを実行すると、メールが届きました!!
※送信元メールアドレスは、上記のLambdaコードとは異なります。
さいごに
独自ドメインを使ったメールが簡単に送信できました。
参考
- Amazon SES でのドメインの検証 - Amazon Simple Email Service
- Amazon SES の ID の検証 - Amazon Simple Email Service
- E メールアドレスの検証 - Amazon Simple Email Service
- SES — Boto 3 Docs 1.12.21 documentation
- Amazon SES サンドボックスの外への移動 - Amazon Simple Email Service
- SES送信制限解除申請 (SES Sending Limits) | Developers.IO
- [AWS]SESを利用したキャリアメール送信について考える | Developers.IO