✉️
Amazon SESでメール送信の設定・実装例
2024-12-18
約1875字
Amazon Simple Email Service (Amazon SES) は、AWS が提供する手軽にメールを配信できるサービスです。類似のサービスとして SendGrid がありますが、AWS 環境で構築を進める場合には、Amazon SES を使うとスムーズに始められます。
この記事では、Python を使用して Amazon SES を実行する手順を紹介します。
yard.tips
を入力)詳細は以下の画像のようになります。
SESでは、デフォルトでサンドボックス機能が有効になっています。
この状態だと、認証済みのメールアドレスにしかメールを送ることができます。
この機能を解除し任意のメールアドレスにメールを送るためには、「本稼働アクセスのリクエスト」を行いAWSのサポートから承認を受ける必要があります。
SESのコンソールの左メニューの「アカウントダッシュボード」を選択し、サンドボックスの解除の申請を行います。
を行い申請の「リクエストを送信」します。
私の場合、初回はリジェクトされてしまいましたが、サポートに問い合わせて利用用途と一日の送信数を丁寧に伝えたら承認されました。
PythonからSESを利用する際はboto3のモジュールをインストールする必要があります。
pip install boto3
AWS lambdaで宛先、件名、本文をパラメータで渡して、メール送信するコードは以下のようになります。
import os
import boto3
def lambda_handler(event, context):
client = boto3.client("ses", "ap-northeast-1")
# メールの送信元、送信先、件名、本文を定義
sender_email = "info@yard.tips"
recipient_email = event["recipient_email"]
subject = event.get("subject")
body_text = event.get("body")
try:
response = client.send_email(Source=sender_email, Destination={"ToAddresses": [recipient_email]}, Message={"Subject": {"Data": subject}, "Body": {"Text": {"Data": body_text}}})
return {"statusCode": 200, "body": f"Email sent successfully to {recipient_email}!"}
except Exception as e:
return {"statusCode": 500, "body": f"Failed to send email: {str(e)}"}
なお、Lambda で Amazon SES のアクセス権限を付与する場合、以下のような設定をIAMロールに追加する必要があります。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "ses:SendEmail",
"Resource": "*"
}
]
}
AWS SESは、AWS環境から気軽にメールを送る際にとても便利です。
他のAWSサービスと組み合わせて、柔軟なシステム構築を実現しましょう。
©︎ 2024 - Yard