0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

AWS SESの利用方法

Last updated at Posted at 2025-04-03

はじめに

AWS SESを利用するにあたって、初期設定の方法をまとめたので共有する。

AWS SESとは

メール送信や受信ができるAWSのサービス。メールの送信はAWS SNSでも可能だが、SESには、送信者の設定、複数の宛先設定、メール本文のカスタマイズなど豊富な機能がある。

方法

事前設定

設定IDの作成

AWS SESの左上のメニューから、ID - 「IDの作成」をクリックする。

67ce410a9aac45005ff04763.png

IDのタイプは、「ドメイン」と「Eメールアドレス」があり以下の違いがある。

  • ドメイン
    • ドメインの前は自由にアドレスを設定できる。(例:hoge@example.com)
    • 設定項目が多い
      • DNS設定が必要
        • Route53で、ホストゾーンを利用している場合は、簡単に設定可能
    • 本番環境への移行が可能
  • Eメールアドレス
    • 簡単に利用可能
    • 送信者が、このアドレスとなる
    • 制約
      • 本番環境への移行ができない
        • ドメイン認証さえと通れば、EメールアドレスIDでも、任意の送信先へ送付できる

以下に、ドメイン、Eメールアドレスでの初期設定方法をそれぞれ示す。

ドメイン

カスタムドメインを利用する。
Route53で設定済みのドメインを利用している場合は、設定が自動で行われるので便利。

image.png

67ec7f589aac45005ff04866.png

以下のように設定する

  • IDタイプ
    • ドメイン
  • ドメイン
    • 任意のドメイン(事前にドメインをお名前ドットコムなどで取得しておく)
    • カスタムMAIL FROMドメインの使用
      • ✓をいれる
  • IDの検証
    • MAIL FROMドメイン
      • mail
        • mail.以降のドメインは、上記に入力したドメインが自動ではいる
  • ドメインの検証
    • DKIMの詳細設定
      • IDタイプ:Easy DKIM
      • DKIM署名キーの長さ: RSA_2048_BIT
    • DNSレコードのRoute53への発行
      • 有効化: Route53へ自動登録される
    • DKIM署名
      • 有効化

「IDの作成」ボタン押して作成する。数分後、IDステータスが「検証済み」となれば成功。

image.png

なお、Route53へのレコードは自動で作成される。

image.png

Eメールアドレスの場合

  • 注意事項
    • Eメールアドレスでは、最初は登録済み送信アドレスにしか送信できない
      • 本番環境へは移行できないので注意
        • ただし、ドメイン認証で本番アクセスを有効にすればEメールIDでも送信可能

image.png

以下の項目を入力する。

  • IDの詳細
    • IDタイプ
      • Eメールアドレス
    • Eメールアドレス
      • 送信元のEメールアドレス

「IDの作成」ボタンを押すと、設定したメールアドレスに、AWSからメールが来るので、承認処理を行う。

承認処理が完了すると、以下の画面が表示される。

67ce42fd9aac45005ff04766.png

本番環境への移行

SESサービス開始後は、サンドボックスモードとなっている。サンドボックスモードは、テスト用の利用が制限されているモードで、任意のアドレスへ送信できないなどの制約がある。詳細は、公式ドキュメントを参照。

SES - 「アカウントダッシュボード」から、本番アクセスへのリクエストを行う。

  • AWS SESのコンソールからの本番アクセス設定には、ドメイン検証済みのIDが必要となるので注意

67ce6bdd9aac45005ff04770.png

本番アクセスをリクエスト」をクリックする。

image.png

image.png

上記画面で、以下の項目を設定する。

リクエストが送信されると、以下のような画面となり、承認待ちとなる。

67ce9ae19aac45005ff04786.png

数分後に承認される。

image.png

送信テスト

AWSコンソールの場合

左側のメニューから、「設定」-「ID」から送信元のIDを選択して、「テストEメールの送信」ボタンを押す。

image.png

image.png

上記画面で、以下の項目を設定して、「テストEメールの送信」ボタンを押す。

  • From-address
    • 送信元アドレス
      • IDのタイプによって設定内容が異なる
        • ドメインの場合

          • ドメインの前、つまり@より前を任意に設定する
            • image.png
        • Eメールの場合

          • 登録したEメールアドレスとなり変更できない
  • シナリオ
    • 「カスタム」を選択:送信先アドレスを指定可能になる
  • カスタム受信者
    • 送信先アドレスを入力
      • ※ただし、サンドボックスモードの場合は、認証済みの送信元アドレスしか送信できない
  • 件名
    • 任意の件名を入力
  • 本文
    • 任意の本文を入力

APIからメール送信

  • TEXTまたはHTML形式で記述可能
    • Teamsなどに転送する場合は、HTMLを推奨
      • テキストだとリンクなどが正しく表示されない

Lambda(Python)

PythonのLambda関数の例を示す。

lambda_function.py
import boto3
from botocore.exceptions import ClientError
from datetime import datetime
import json

def lambda_handler(event, context):
    # IDを設定する(Eメール、またはドメインの場合は、@より前は任意に設定する
    sender = '<sender_id>' 
    ses = boto3.client('ses')

    email_address_list = [] # 送信先アドレスを設定する
    email_address_list.append('hoge@example.com')
    email_address_list.append('fuga@example.com')
    try:
        charset = "UTF-8"
        response = ses.send_email(
            Source=f'{sender}',
            Destination={
                'ToAddresses': email_address_list
            },
            Message={
                'Subject': {
                    'Charset': charset,
                    'Data': subject
                },
                'Body': {
                    'Html': {
                        'Charset': charset,
                        'Data': html_body,
                    }
                    # テキスト形式の場合は以下
                    #'Text': {
                    #    'Charset': charset,
                    #    'Data': text_body
                    #}
                }                
            }
        )

    except ClientError as e:
        print(e.response['Error']['Message'])
        return {
            'statusCode': 500,
            'body': 'Error sending email via SES'
        }
  • sender
    • メールIDもしくは、ドメイン
      • ドメインの場合は、任意の送信アドレス@ドメイン名 となる

トラブルシューティング

テストメールを送信できない

無効なコンテンツが含まれているため、メッセージを送信できません。
Email address is not verified. The following identities failed the check in region AP-NORTHEAST-1: 885775f3.groups.jp.ricoh.com@apac.teams.ms

サンドボックスモードが解除されているかを確認する。SESは、開始後はサンドボックスモードとなっており、登録済みのメールにしか送信できない。

Teamsチャットに転送するとURLがリンクにならない

テキストメールで送ると、TeamsチャットではURLがリンクにならない。HTML形式で送る必要がある。

参考

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?