第2回! AWS Lamdaから SendGridでメールを送る (宛先、件名、本文をパラメータで渡す)

2022年3月13日日曜日

AWS Python SendGrid

t f B! P L

前回 は、AWS Lamda関数を作って、SendGridを使って固定の宛先にメールを送る方法を紹介した。

今回は API Gatewayで Lamda関数を HTTP APIにして、宛先、件名、本文を POSTパラメータとして受けとるようにする。

API Gatewayの作成

最初に、API Gatewayを作る。

POST mail/send でメールを送信する Lamda関数を呼ぶように仕込む。

enter image description here

パラメータの定義

メールを送信する為の宛先(to)、件名(subject)、本文(body)の指定は、次の JSON形式で渡すものとする。
また、宛先(to)は、配列で複数指定可能とする。

{
  "to": [
    "to_email_1@example.com",
    "to_email_2@example.com"
  ],
  "subject": "件名",
  "body": "メール本文"
}

Lamda関数の修正

API Gatewayからの POSTパラメータは、引数 event のキー body に入ってくるので、それを拾って、メール送信のパラメータにセットするように Lamda の処理を作る。

import json
import os
from sendgrid import SendGridAPIClient
from sendgrid.helpers.mail import Mail

def lambda_handler(event, context):
    data = event.get("body")
    
    # メールを送信
    message = Mail(
        from_email='from_email@example.com',
        to_emails=data["to"],
        subject=data["subject"],
        html_content=data["body"])
    try:
        sg = SendGridAPIClient(os.environ.get('SENDGRID_API_KEY'))
        response = sg.send(message)
        print(response.status_code)
        print(response.body)
        print(response.headers)
    except Exception as e:
        print(e.message))

    return {
        'statusCode': 200,
        'body': json.dumps('Send Mail!!')
    }

これで、POSTパラメータで指定された値で、メールが送信できる。

スポンサーリンク
スポンサーリンク

このブログを検索

Profile

自分の写真
Webアプリエンジニア。 日々新しい技術を追い求めてブログでアウトプットしています。
プロフィール画像は、猫村ゆゆこ様に書いてもらいました。

仕事募集もしていたり、していなかったり。

QooQ