Herokuで定期的にメールを配信する【Python, SendGrid】
Herokuで定期的にメール配信をするための手順メモ。
Herokuのアドオン「Heroku Scheduler」で定期的な処理を行う。
メールの配信には「SendGrid」を用いる。
【環境】
$ sw_vers
ProductName: Mac OS X
ProductVersion: 10.14.3
BuildVersion: 18D109
$ heroku --version
heroku/7.22.2 darwin-x64 node-v11.9.0
【手順】
1. SendGridのアカウントを作成する
審査が通るまで~2営業日ほど待機。
sendgrid.kke.co.jp
2. SendGrid API Keyを作成する
SendGrid登録完了メールに記載されているユーザ名でログイン。
ダッシュボードから「API Keys」に移り、API Keyを作成する。
3. スケジュールを設定する
# ログイン $ heroku login # Appにアドオン「Heroku Scheduler」を追加する $ heroku addons:add scheduler:standard # スケジュール設定画面を開く $ heroku addons:open scheduler
開いたページ内のボタン「Add new job」をクリックして、
実行するコマンド、実行周期、時間帯を設定する。
時間帯はUTCのため、9時間の時差を考慮する必要あり。
4. メール配信プログラムの作成
# Herokuの環境変数にSendGrid API Keyを設定する $ heroku config:set SENDGRID_APIKEY="<SENDGRID APIKEY>" # 環境変数の確認 $ heroku config # 必要なパッケージの登録 $ echo sendgrid >> requirements.txt # メール配信プログラム $ vim send_mail.py
# -*- coding: utf-8 -*- import os import sendgrid from sendgrid.helpers.mail import * APIKEY = os.getenv('SENDGRID_APIKEY', None) sg = sendgrid.SendGridAPIClient(apikey=APIKEY) from_email = Email("<FROM ADDRESS>") to_email = Email("<TO ADDRESS>") subject = 'Send Mail Test' content = Content('text/plain', 'Hello World') mail = Mail(from_email, subject, to_email, content) sg.client.mail.send.post(request_body=mail.get())
5. デプロイして完了!!
意外と簡単にできまちた。
【参考】