🐓

DjangoにSendGridを導入する方法

2021/11/29に公開

Django のメール送信を SendGrid を使用して送信するように変更していきます。

SendGrid を使用すると、メールを確実に配信することができ、到達状況をリアルタイムで確認できるようになります。

動画解説

動画でも解説していますので、参考にしてください。

https://youtu.be/7cUFU659S3Y

アカウント登録

まずは SendGrid のアカウントを登録します。

https://sendgrid.com/

sendgrid

Start for freeボタンから登録しましょう。

API 作成

API キーを作成します。

Settings->API Keys から API キーを作成することができます。

API キーを作成したらメモしておきましょう。

送信元登録

送信元を登録します。

Marketing->Senders から送信元を登録します。

ライブラリインストール

Django にdjango-sendgrid-v5ライブラリをインストールします。

requirements.txt

django-environ~=0.4.5
django-sendgrid-v5~=1.1.1
$ pip3 install -r requirements.txt

設定

settings.py に SendGrid の設定をします。

以前使用していた、EMAIL_BACKEND などの設定は使用しませんので、削除します。

DEFAULT_FROM_EMAILSENDGRID_API_KEYは環境ファイルに記載します。

ローカルでテストしたい場合は、SENDGRID_SANDBOX_MODE_IN_DEBUGを True に設定します。

実際にメールを送信したい場合は、SENDGRID_SANDBOX_MODE_IN_DEBUGを False に設定します。

メール内の URL のトラッキングをしたい場合は、SENDGRID_TRACK_CLICKS_PLAINを True に設定します。

トラッキングをしない場合は、False に設定します。

設定はドキュメントを参考に設定してください。

https://github.com/sklarsa/django-sendgrid-v5

settings.py

import environ
import os

env = environ.Env()
env.read_env(os.path.join(BASE_DIR, '.env'))

# # ローカル確認用
# EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend'

# # 本番環境用
# # EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
# EMAIL_HOST = 'smtp.gmail.com'
# EMAIL_PORT = 587
# EMAIL_HOST_USER = 'xxx@gmail.com'
# EMAIL_HOST_PASSWORD = 'xxx'
# EMAIL_USE_TLS = True
# DEFAULT_FROM_EMAIL = 'xxx@gmail.com'

# SendGridを使用
EMAIL_BACKEND = 'sendgrid_backend.SendgridBackend'
# 送信元メールアドレス
DEFAULT_FROM_EMAIL = env('DEFAULT_FROM_EMAIL')
# SendGridのAPIキー
SENDGRID_API_KEY = env('SENDGRID_API_KEY')

# ローカル用
SENDGRID_SANDBOX_MODE_IN_DEBUG = True
# 本番環境用
# SENDGRID_SANDBOX_MODE_IN_DEBUG = False

# URLのトラッキングをOFF
SENDGRID_TRACK_CLICKS_PLAIN = False
# ターミナルに表示
SENDGRID_ECHO_TO_STDOUT = True

環境ファイル

.envファイルにメールアドレスと SendGrid の API キーを記載します。

.env

DEFAULT_FROM_EMAIL=xxxx@gmail.com
SENDGRID_API_KEY=xxxx

以上で、SendGrid を使用してメール送信が可能になりました。

Discussion