DjangoでHTMLメールを送信する

DjangoでHTMLメールを送信する

DjangoでHTMLメールを送信する方法です。

メールの送信設定

まず、setting.pyでメールサーバーの設定を行います。

下記のソースコードを参考に使用するメールサーバーのログイン設定を記述しましょう。

# setting.py
EMAIL_BACKEND='django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = 'sample.com'
EMAIL_PORT = 587
EMAIL_HOST_USER = 'info@sample.com'
EMAIL_HOST_PASSWORD = 'password'
EMAIL_USE_TLS = True

メールの送信

メールの送信は、Viewで行います。

メール本文にはrender_to_string()を使用してテンプレートから本文を作成することができます。

メールのテンプレートは、HPを表示する時と同じテンプレートを使用する事ができます。

レガシーなメーラーは、HTMLメールに対応していないことがあるので、普通のメール本文も一緒に作成して送信してあげましょう。

# view.py
from django.core.mail import send_mail
...

def foo(request):
        # 表題
        subject = "表題"

        # 送信元
        from_email = "noreply@sample.com"

        # 送信先
        recipient_list = [
            "info@sample.com",
        ]

        # パラメータ
        context = {
            "name" : "foo",
        }

        # プレーンテキスト用テンプレート
        msg_plain = render_to_string('mail_template/sample.txt', context)

        # HTMLメール用テンプレート
        msg_html = render_to_string('mail_template/sample.html', context)

        send_mail(subject, msg_plain, from_email, recipient_list, html_message=msg_html,)