らくがきちょう

なんとなく ~所属組織/団体とは無関係であり、個人の見解です~

Python の boto3 から Amazon SES を使ってメール送信する

Python の boto3 を使って Amazon SES からメール送信するサンプルプログラムをメモしておきます。 SES のサンドボックスの解除など、SES を使う上で必要な設定は済んでいる前提です。

config.py

必須ではありませんが、送信関連パラメータは送信プログラム本体にハードコードしたり、毎回引数で指定するよりはマシかと思い、別ファイルから読み込む形式にしてみました。

REGION = 'us-east-1'
FROM = 'no-reply@example.com'
TO = 'to@example.com'
REPLY = 'no-reply@example.com'

send_email.py

To だけを指定してテキスト形式メールを送信する、最小のサンプルは以下の通りです。

#!/usr/bin/env python
"""Send a e-mail."""
import sys
import boto3
from config import *

ARGS = sys.argv
if len(ARGS) != 3:
    print('Usage: python send_mail.py [SUBJECT] [BODY]')
    sys.exit(1)

SUBJECT = ARGS[1]
BODY = ARGS[2]

SES = boto3.client('ses', region_name=REGION)

SES.send_email(
    Source=FROM,
    Destination={
        'ToAddresses': [TO]
    },
    Message={
        'Subject': {
            'Data': SUBJECT,
            'Charset': 'UTF-8'
        },
        'Body': {
            'Text': {
                'Data': BODY,
                'Charset': 'UTF-8'
            }
        }
    },
    ReplyToAddresses=[REPLY]
)

実行例

実行例は以下の通りです。

# python send_email.py 'Subject Test' 'Body Test'