AWS SESを使用してメール送信を行う

個人開発したアプリの宣伝
目的地が設定できる手帳のような使い心地のTODOアプリを公開しています。
Todo with Location

Todo with Location

  • Yoshiko Ichikawa
  • Productivity
  • Free

スポンサードリンク

AWS SES( Simple Email Service )はAWS上で利用できるMTA。みたいなもの。

AWSから提供されているライブラリを利用することでビルトインのメールサーバのような感覚で使用できます。


SESのリージョン

SESは東京リージョンはサポート対象外なので、対応している海外リージョンを使用する


SESのサンドボックスを解除する

SESのデフォルトは登録済みのアドレス宛てに対してのみ送信可能で、送受信数の制限のかかったサンドボックスモードでの利用となる。

サンドボックスを解除するには、SESコンソールから

  • Sending Statistics
  • Request a Sending Limit Increase

と操作していき、Support Centerに緩和申請を行うことで解除できる。


利用するEmailアドレスの登録

SESからメール送信時に使用するFromアドレスの登録・検証を行います。

SESコンソールから

  • Email Addresses
  • Verify a New Email Address
  • 許可するメールアドレスを登録
  • 入力したメールアドレスに確認用URLが届くのでそのURLにアクセスする
  • SESコンソール上で登録したメールアドレスのVerification Statusがverifiedになる

これで、verifiedとなったアドレスを差出人として使用したりサンドボックスでの宛先として使用することができる。


SESの実行ロール

LambdaからSESを使用してメール送信するにはSESへのアクセスを許可する実行ロールが必要となる。


メールの送信

PythonからSESを使用してメール送信する関数。boto3を利用。

us-east-1'は使用のリージョンに適宜読み替えて下さい。

MAILFROM = 'SESで許可したメールアドレス'
def sendmail(to, subject, body):
    client = boto3.client('ses', region_name='us-east-1')
    response = client.send_email(
        Source=MAILFROM,
        ReplyToAddresses=[MAILFROM],
        Destination= {
            'ToAddresses': [to]
        },
        Message={
            'Subject':{
                'Data': subject,
                'Charset': 'UTF-8'
            },
            'Body': {
                'Text': {
                    'Data': body,
                    'Charset': 'UTF-8'
                }
            }
        }
    )