前回 は、AWS Lamda関数を作って、SendGridを使って固定の宛先にメールを送る方法を紹介した。
今回は API Gatewayで Lamda関数を HTTP APIにして、宛先、件名、本文を POSTパラメータとして受けとるようにする。
API Gatewayの作成
最初に、API Gatewayを作る。
POST mail/send
でメールを送信する Lamda関数を呼ぶように仕込む。
パラメータの定義
メールを送信する為の宛先(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パラメータで指定された値で、メールが送信できる。
0 件のコメント:
コメントを投稿