Amazon SESで独自ドメインを使ってno-replyメールをLambdaから送信する

Amazon SESで独自ドメインを使ってno-replyメールをLambdaから送信する

Amazon SES(Simple Email Service)と独自ドメインを組み合わせて、no-reply@example.comのようなメールアドレスからメールを送信してみました。メールの送信処理はLambdaで行っています。
Clock Icon2020.03.17

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

Amazon SES(Simple Email Service)は、Eメールを送信するサービスです。 これと独自ドメインを組み合わせて、no-reply@example.comのようなメールアドレスからメールを送信してみました。 なお、メールの送信処理はLambdaで行っています。

Amazon SESで独自ドメインを使って送信したメール

Amazon SESのメール送信について

不正や悪用を防止するため、Amazon SESの初期状態はサンドボックスになっています。

  • 送信元:
  • サンドボックス内:検証済であること(メールアドレス or ドメイン)
  • サンドボックス外:検証済であること(メールアドレス or ドメイン)
  • 送信先:
  • サンドボックス内:検証済のメールアドレスのみ
  • サンドボックス外:任意のメールアドレス(※)

※携帯キャリアに届かない(相性が悪い)などの可能性はあります。

本記事では、下記の組み合わせでメール送信を試してみました。

  • 送信元:サンドボックス内(検証済のドメイン)
  • 送信先:サンドボックス内(検証済のメールアドレス)

Amazon SESで独自ドメインを設定する

Amazon SESにアクセスする

Amazon SESにアクセスします。東京リージョンは無いため、どこか適当に選びます。

Amazon SESのリージョンを選択する

ドメイン検証の準備をする

左側メニューにある「Domains」を選択し、「Verify a New Domain」を選択します。

Amazon SESでドメインを追加する

所持しているドメインを入力し、Generate DKIM Settingsにチェックを入れて「Verify This Domain」を選択します。

Amazon SESで追加するドメインを入力する

ドメイン検証に必要な情報が表示されました。

Amazon SESでドメイン検証に必要な情報

DKIM Record Setの部分ですが、実は3つあるので要注意です(ハマった)

DKIM Record Setは3つあるので注意!

ドメインの検証をする(DNSレコードの設定)

DNSサーバの設定画面を開き、さきほどのドメイン検証に必要な情報(4つ)を追加していきます。下記の画像はNetlifyのDNS設定画面の様子です。

DNSレコードを追加する

Email Receiving Record

今回はメール送信を試したいため、メール受信用の設定は行いませんでした。

ドメイン検証が終わるのを待つ

しばらく待って次のようになればOKです。今回は5分ぐらい待ちました。

Amazon SESでドメイン検証が終わる

Amazon SESで送信先メールアドレスの検証をする

左側メニューにある「Email Addresses」を選択し、「Verify a New Email Address」を選択します。 続いて送信先メールアドレスを入力します。

Amazon SESでメールアドレスの検証をする

「Verify This Email Address」を選択すると検証用のメールが届くので、その中のURLをクリックして検証完了です。

Amazon SESでメールアドレスの検証が完了

Lambdaでメールを送信する

Lambdaのコード

次のLambdaコードを作成します。Lambdaの権限にはarn:aws:iam::aws:policy/AmazonSESFullAccessを追加しています。

送信してみる

Webコンソール上でLambdaを実行すると、メールが届きました!!

Amazon SESで独自ドメインを使って送信したメール

※送信元メールアドレスは、上記のLambdaコードとは異なります。

さいごに

独自ドメインを使ったメールが簡単に送信できました。

参考

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.