LoginSignup
3
2

More than 3 years have passed since last update.

django.core.mail 〜send_mail()とEmailMessageクラス〜

Last updated at Posted at 2020-12-09

はじめに

今DjangoでWebアプリケーションを作成しています。

その中でメール機能をつける事があったのでDjangoが持っているメール機能の内、代表的な二つの機能について説明したいと思います。

環境

  • Django3.1
  • Python3.7

django.core.mailとは?

Djangoが搭載しているメール機能が入っているモジュールです!
これをimportすることでDjangoが搭載しているメール機能を使用することが出来ます。

python.py
from django.core.mail import [クラス/メソッド名]

代表的なメソッド・クラス

send_mail()

引数

subject *(必須)
件名
型:文字列
message *(必須)
本文
型:文字列
from_email *(必須)
送信者
型:文字列
recipient_list *(必須)
メール受信者のリスト
型:リスト or タプル
fail_silently
falseの場合、エラーが起きた際に例外クラスを発生させる。デフォルトはfalse。
型:ブール
auth_user
SMTPユーザー認証のためのユーザー名
型:文字列
atuh_password
SMTPユーザー認証のためのパスワード
型:文字列
connection
メール送信のために使うバックエンド
html_message
送信されるメールのコンテンツタイプ

例)

example_send_email.py
from django.core.mail import send_mail

send_mail(
    'Subject here', #件名
    'Here is message', #本文
    'from@example.com', #送信者のメアド
    ['to@example.com', 'to2@example.com'], #受信者のメアドリスト
    fail_silently = False, #エラーが起きた際にsmtplib.SMTPException例外クラスを発生
)

EmailMessageクラス

先ほど説明したsend_email()では高度なメール機能を使えません(BCCやファイル添付など)。

そのため、Djangoで高機能なメールを使いたい場合はEmailMessageクラスのインスタンスを作成して使うことが一般的です。

パラメータ

subject
件名
body
本文
from_email
送信者のメアド
to
受信者のメアドのリスト、もしくはタプル
bcc
bccに設定するメアドのリスト、もしくはタプル
connection
メールバックエンドのインスタンス
attachments
メッセージに添付するファイルのリスト
headers
メッセージに追加するヘッダーの辞書
reply_to
Reply-Toヘッダ内で使われる受信者のアドレスのリストまたはタプル

メソッド

EmailMessageクラスは以下のメソッドが使えます!

send(fail_silently=false)
メッセージを送信するメソッド。キーワード引数のfail_silentlyがTrueの場合は例外を発生させない。
recipients()
to, cc, bccに設定されているメッセージの全ての受信者のリストを返す。
attach
新しい添付ファイルを作成し、メーセージに追加する。
attach_fail()
ファイルシステムのファイルを使用して新しい添付ファイルを作成する。
mail.py
message.attach_file('/images/weather_map.png')
3
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
3
2