LoginSignup
1
2

2024年最新版 - DjangoからGmailを送信

Posted at

概要

2024年からGoogleでは「安全性の低いアプリへのアクセス」を許可することが
できなるくなるみたいですので、
これまでとは若干異なる方法でGmailを送信する機能を作成する必要があります。
この記事ではローカル環境から自身で用意したGmailから任意のアドレスへメールを送信する機能を実装します。

バージョンなど
Django:3.2.6(4でも動作するかと)

OS:Mac OS

動作確認日:2024年1月2日

Googleアカウントの設定

Gmailを送信するためには、2段階認証をONにし、アプリパスワードを生成する必要があります。
アプリパスワードとは、Googleアカウントへログインする用のアカウントとは異なります。
https://myaccount.google.com/

上記のURLへ、メールを送信するアカウントでログインしてください。
ログイン後に、セキュリティタブから2段階認証を選択して、ONになっていない人は
Googleの指示に従い、ONにしてください。
スクリーンショット 2024-01-03 0.47.49.png

ONにしたら、2段階認証プロセスをクリックして、下の方にスクロールすると
アプリパスワードという項目があります。
スクリーンショット 2024-01-03 0.48.34.png

アプリパスワードをクリックして、適当なアプリ名を作成すると、
画面上に16桁のアプリパスワードが生成されます。
生成されたパスワードは保存しておいてください。
スクリーンショット 2024-01-03 0.48.44.png

Djangoの設定ファイルを修正

以下をsettings.pyへ追記。
先ほどコピーしたパスワードとメアドを設定します。その他の項目はそのままでOKです。

settings.py
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = 'smtp.gmail.com'
EMAIL_PORT = 587
EMAIL_USE_TLS = True
EMAIL_HOST_USER = '送信用のメールアドレス'
EMAIL_HOST_PASSWORD = 'アプリパスワード'

Viewsの作成

send_mail()内は任意で変えてください。

views.py
from django.shortcuts import render
from django.core.mail import send_mail

def send_email(request):
    send_mail(
        '件名',  # 件名
        'メールの本文',  # メッセージ
        'mbiclife0@gmail.com',  # 送信元のメールアドレス
        ['jjondayo@gmail.com'],  # 送信先のメールアドレスのリスト
        fail_silently=False,
    )
    return redirect('test')  # メール送信後に遷移するページ

URLの設定

URLパターンに以下を追加します。

urls.py
path('send_mail/', send_email, name='send_mail'),

テンプレート作成

任意のテンプレートに以下を追加。

index.html
<form action="{% url 'send_mail' %}" method="post">
    {% csrf_token %}
    <button type="submit">Mail</button>
</form>

これでメールを送ることができるはず、です。

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2