#はじめに
今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')