Open5
Django on herokuでメール送信できるようにしたい
1. SendGridのアドオン追加
コマンドからSendGridアドオンを追加する
heroku addons:create sendgrid:starter
追加できたら、Heroku管理画面に下記のように表示される
アドオンをクリックすると、情報の入力が聞かれる
個人利用である旨を記載、ウェブサイトにはXのリンクを乗っけといた
SendGridのダッシュボードが立ち上がる(下記コマンドでも可能)
heroku addons:open sendgrid
参考
2. SendGridの設定
とりあえずアドオンを追加できたので、公式の手順に従って、設定をすすめていく。
Two-factor authentication (2FA) の設定
- ダッシュボード上で見当たらなかったので飛ばす
APIキーの作成
-
[Settings] > [API Keys]で作成画面が表示されるので、「Create API Key」をクリック
-
APIキーの名前とアクセス権を設定する
- キー名は任意、アクセス権は「Full Access」とした
- キー名は任意、アクセス権は「Full Access」とした
-
APIキーが表示されるのでメモっておく(※二度と表示されないので注意)
-
APIキーが作成されるとこんな感じ
Senderの設定
- [settings] > [Single Authentication]で、Senderの作成画面を開く
- とりあえず自身のメールアドレス等を設定して、「Create」ボタンをクリックする
- とりあえず自身のメールアドレス等を設定して、「Create」ボタンをクリックする
上記で設定したアドレスに認証メールが届くので、
「Verify Single Sender」をクリックして、認証が通ると下記画面が表示される
参考
3. 環境変数の設定
APIキーの発行ができたら、Herokuの環境変数に設定する。
今回はherokuCLIから設定する(-a以降はなくてもいい)
heroku config:set SENDGRID_API_KEY=[作成したAPIキー] -a [アプリ名]
ダッシュボードにも反映済み
準備は整ったので、APIを使用したメール配信処理の実装を進める
参考
4. メール送信処理の実装
Django公式のフォーラムを確認したところ、Anymail
が良さげなのでこちら採用してみる。
Anymailの導入
こちらを見ながら、Anymailのセットアップを進める
- まずは
Anymail
をインストールする
terminal
pip install "django-anymail[sendgrid]"
-
setttings.py
に下記設定を記載する
settings.py
INSTALLED_APPS = [
# ...
"anymail",
# ...
]
EMAIL_BACKEND = "anymail.backends.sendgrid.EmailBackend"
ANYMAIL = {
...
"SENDGRID_API_KEY": env("SENDGRID_API_KEY")
}
参考