3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Djangoでメール送信

Posted at

はじめに

ここでは、Djangoでメール送信をする方法について解説していきます。
お問い合わせフォームの作成などに使うことができます。

デフォルトの設定

まず、settings.pyにメール関連の設定を記述します。
以下は、Gmailを用いる場合の例です。

settings.py
EMAIL_HOST = 'smtp.gmail.com'
EMAIL_HOST_USER = 'sample@gmail.com'
EMAIL_HOST_PASSWORD = アプリ用のパスワード
EMAIL_PORT = 587
EMAIL_USE_TLS = True

メールの件名や宛先の設定

ここでは、お問い合わせフォームで
forms.pyにメール送信用の関数を定義します。

forms.py
from django import forms
from django.conf import settings
from django.core.mail import BadHeaderError, EmailMessage
from django.http import HttpResponse


def send_email(self):
        subject = 'お問い合わせ:' + self.cleaned_data['title']
        name = self.cleaned_data['name']
        email = self.cleaned_data['email']
        from_email = '{name} <{email}>'.format(name=name, email=email)
        message = self.cleaned_data['body']
        recipient_list = [settings.EMAIL_HOST_USER]
        email_message = EmailMessage(subject, message, from_email, recipient_list, reply_to=[email])
        try:
            email_message.send()
        except BadHeaderError:
            return HttpResponse('無効なヘッダが検出されました。')

EmailMessageインスタンスを作成するところの、reply_toを設定しないと、問い合わせをした人のメールアドレスが分からずメール返信で回答できなくなってしまうので、忘れず入れるようにします。

まとめ

ここでは、Djangoでメール送信をするときに必要な設定について解説しました。
お問い合わせフォーム以外にも応用できます。

3
1
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
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?