【django】メールの送信方法【Gmail送信サンプル】

Django

djangoでWebサイトを作った時に、ユーザへの連絡や
入力フォームの確認などにメールを送る場合があります。

そのdjangoでのメールの送信方法を簡単に書いていきます。

最後に実際にGmailでメールを送るサンプルを書きます。

djangoでのメール送信

settings.py

settings.pyに以下を付け加えます。
gmailで送る場合はこんな感じになります。

EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = 'smtp.gmail.com'
EMAIL_PORT = 587
EMAIL_HOST_USER = 'your_mailadress@gmail.com'
EMAIL_HOST_PASSWORD = 'password'
EMAIL_USE_TLS = True

使うメールサービスによって、EMAIL_HOSTの部分が変わります。
使いたいメールサービス名と「smtp」で調べれば、必要なsmtpが出てきます。

ちなみに、smtpサーバに送信しない(メールを送らない)方法として
コンソールに出力する方法があります。以下に変更するとできます。

EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend'

ここまでがsettings.pyです。

views.py

views.pyには以下のように書くとメールを送れます。

from django.core.mail import send_mail

def sendmail(request):
    subject = " タイトル "
    message = " これはメッセージです。 "
    from_email = “your_mailadress@gmail.com”
    to = [“to_mail@gmail.com”]
    send_mail(subject, message, from_email, to)
    return HttpResponce(‘メール送信完了’) 

ここで重要なのはsend_mail()関数で、この関数でメールを送ります。
send_mail()の引数は(“件名”, “本文”, “送信者”, “宛先リスト”)です。

BCCを送るためにはEmailMessage()関数です。

from django.core.mail import EmailMessage

def sendmail(request):
    subject = " タイトル "
    message = " メッセージ "
    from_email = "your_mailadress@gmail.com"
    to = ["to_mail@gmail.com"]
    bcc = ["bcc_mail@gmail.com"]
    EmailMessage(subject, message, from_email, to, bcc).send()

EmailMessage()関数の引数は(“件名”, “本文”, “送信者”, “宛先リスト”, “BCC宛先リスト”)です。
EmailMessage().send()をつけると送信することができます。

Gmailでのメール送信サンプル

Gmailでのメール送信のサンプルを書いていきます。
Gmailを使いたい場合、パスワードを入手するために一手間必要です。

Gmailのパスワード開示方法

Gmailのパスワードの表示方法を順に追っていきます。


メールを送信したいアカウントにログインします。
ログイン後、「アカウントの管理」から以下のページに飛びます。

左側のタブの「セキュリティ」をクリックします。

下にスクロールすると「Googleへのログイン」があります。
そこのアプリパスワードをクリック。

パスワードを入力します。

パスワード入力後、アプリパスワードの画面になります。
「アプリを選択」から「その他(名前を入力)」を選択し、好きな名前を入れます。

するとアプリパスワードが生成されます。
このアプリパスワードをsettings.pyのEMAIL_HOST_PASSWORDに
入力するとメールを送ることができます。

Gmailのメール送信のサンプル

あとは上記のviews.pyを使い、コードを書いてメールを送ります。

EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = 'smtp.gmail.com'
EMAIL_PORT = 587
EMAIL_HOST_USER = 'your_mailadress@gmail.com'
EMAIL_HOST_PASSWORD = 'lobsroahavpcsrdj'
EMAIL_USE_TLS = True
from django.core.mail import send_mail

def sendmail(request):
    subject = ' タイトル '
    message = ' これはメッセージです。'
    from_email = 'your_mailadress@gmail.com'
    to = ['to_mail@gmail.com']
    send_mail(subject, message, from_email, to)
    return HttpResponce('') 

実際にGmailで送ってみるとこんな感じになります。

以上です。

参考までに

参考とした本です。

タイトルとURLをコピーしました