hikaru’s diary

Django Engineer

【Django】OAuth 2.0を使ってGmail送信

8/2追記:GCPの設定をしなくてもアプリパスワードからパスワードを生成したら出来るそうです。
[Django]Gmailのメールアドレスからメールを送信できるようにする | CodeLab
アプリ パスワードでログインする - Google アカウント ヘルプ



googleのセキュリティ強化によりユーザー名パスワードのみでログインするサードパーティアプリにアクセスできなくなりました。
Djangoではメールをグーグル以外にしたり回避方法がいくつかあるっぽいですが、推奨されているOAuth 2.0っていうのを使っていきます。


GitHub - dolfim/django-gmailapi-backend: Email backend for Django which sends email via the Gmail API

pip install django-gmailapi-backend


settings.py

INSTALLED_APPS = [
    ...
    'gmailapi_backend',
    ...
]

EMAIL_BACKEND = 'gmailapi_backend.mail.GmailBackend'

# のちに設定
GMAIL_API_CLIENT_ID = 'client_id'
GMAIL_API_CLIENT_SECRET = 'client_secret'
GMAIL_API_REFRESH_TOKEN = 'refresh_token'


クライアントID,シークレットキー,トークンが必要なのでGCPから色々設定する
OAuth 2.0 を使用してGoogle API にアクセスする方法



無事メール送信できました。
以上、お疲れ様でした。