Django-電子メールの送信
Djangoには、電子メールを送信するための、すぐに使用できる使いやすいライトエンジンが付属しています。Pythonと同様に、smtplibをインポートする必要があります。Djangoでは、django.core.mailをインポートするだけです。電子メールの送信を開始するには、プロジェクトのsettings.pyファイルを編集し、次のオプションを設定します-
EMAIL_HOST −SMTPサーバー。
EMAIL_HOST_USER −SMTPサーバーのログイン資格情報。
EMAIL_HOST_PASSWORD −SMTPサーバーのパスワード資格情報。
EMAIL_PORT −SMTPサーバーポート。
EMAIL_USE_TLS or _SSL −安全な接続の場合はtrue。
簡単なメールの送信
簡単な電子メールを送信するための「sendSimpleEmail」ビューを作成しましょう。
from django.core.mail import send_mail
from django.http import HttpResponse
def sendSimpleEmail(request,emailto):
res = send_mail("hello paul", "comment tu vas?", "[email protected]", [emailto])
return HttpResponse('%s'%res)
send_mail −のパラメータの詳細は次のとおりです。
subject −電子メールの件名。
message −電子メールの本文。
from_email −からの電子メール。
recipient_list −受信者の電子メールアドレスのリスト。
fail_silently −ブール値。falseの場合、send_mailはエラーの場合に例外を発生させます。
auth_user −settings.pyで設定されていない場合のユーザーログイン。
auth_password −settings.pyで設定されていない場合のユーザーパスワード。
connection −電子メールバックエンド。
html_message −(Django 1.7の新機能)存在する場合、電子メールはマルチパート/代替になります。
ビューにアクセスするためのURLを作成しましょう-
from django.conf.urls import patterns, url
urlpatterns = paterns('myapp.views', url(r'^simpleemail/(?P<emailto>
[\w.%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4})/',
'sendSimpleEmail' , name = 'sendSimpleEmail'),)
したがって、/ myapp / simpleemail / polo @ gmail.comにアクセスすると、次のページが表示されます-
send_mass_mailで複数のメールを送信する
このメソッドは、正常に配信されたメッセージの数を返します。これはsend_mailと同じですが、追加のパラメーターを取ります。datatupleの場合、sendMassEmailビューは次のようになります。
from django.core.mail import send_mass_mail
from django.http import HttpResponse
def sendMassEmail(request,emailto):
msg1 = ('subject 1', 'message 1', '[email protected]', [emailto1])
msg2 = ('subject 2', 'message 2', '[email protected]', [emailto2])
res = send_mass_mail((msg1, msg2), fail_silently = False)
return HttpResponse('%s'%res)
ビューにアクセスするためのURLを作成しましょう-
from django.conf.urls import patterns, url
urlpatterns = paterns('myapp.views', url(r'^massEmail/(?P<emailto1>
[\w.%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4})/(?P<emailto2>
[\w.%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4})', 'sendMassEmail' , name = 'sendMassEmail'),)
/myapp/massemail/[email protected]/[email protected]/にアクセスすると、次のようになります。
send_mass_mailパラメータの詳細は次のとおりです。
datatuples −各要素が(subject、message、from_email、recipient_list)のようなタプル。
fail_silently −ブール値。falseの場合、send_mailはエラーの場合に例外を発生させます。
auth_user −settings.pyで設定されていない場合のユーザーログイン。
auth_password −settings.pyで設定されていない場合のユーザーパスワード。
connection −電子メールバックエンド。
上の画像でわかるように、2つのメッセージが正常に送信されました。
Note −この例では、Python smtp debugserverを使用しています。これは、−を使用して起動できます。
$python -m smtpd -n -c DebuggingServer localhost:1025
これは、送信されたすべての電子メールがstdoutに出力され、ダミーサーバーがlocalhost:1025で実行されていることを意味します。
Sending e-mails to admins and managers using mail_admins and mail_managers methods
これらのメソッドは、settings.pyファイルのADMINSオプションで定義されているサイト管理者と、settings.pyファイルのMANAGERSオプションで定義されているサイト管理者に電子メールを送信します。ADMINSオプションとMANAGERSオプションが次のようになっていると仮定します-
ADMINS =(( 'polo'、 '[email protected]')、)
MANAGERS =(( 'popoli'、 '[email protected]')、)
from django.core.mail import mail_admins
from django.http import HttpResponse
def sendAdminsEmail(request):
res = mail_admins('my subject', 'site is going down.')
return HttpResponse('%s'%res)
上記のコードは、ADMINSセクションで定義されたすべての管理者に電子メールを送信します。
from django.core.mail import mail_managers
from django.http import HttpResponse
def sendManagersEmail(request):
res = mail_managers('my subject 2', 'Change date on the site.')
return HttpResponse('%s'%res)
上記のコードは、MANAGERSセクションで定義されたすべてのマネージャーに電子メールを送信します。
パラメータの詳細-
Subject −電子メールの件名。
message −電子メールの本文。
fail_silently −ブール値。falseの場合、send_mailはエラーの場合に例外を発生させます。
connection −電子メールバックエンド。
html_message −(Django 1.7の新機能)存在する場合、電子メールはマルチパート/代替になります。
HTMLメールの送信
Django> = 1.7でHTMLメッセージを送信するのは-と同じくらい簡単です
from django.core.mail import send_mail
from django.http import HttpResponse
res = send_mail("hello paul", "comment tu vas?", "[email protected]",
["[email protected]"], html_message=")
これにより、マルチパート/代替の電子メールが作成されます。
ただし、Django <1.7の場合、HTMLメッセージの送信はdjango.core.mail.EmailMessageクラスを介して行われ、オブジェクトで「send」を呼び出します-
HTML電子メールを送信するための「sendHTMLEmail」ビューを作成しましょう。
from django.core.mail import EmailMessage
from django.http import HttpResponse
def sendHTMLEmail(request , emailto):
html_content = "<strong>Comment tu vas?</strong>"
email = EmailMessage("my subject", html_content, "[email protected]", [emailto])
email.content_subtype = "html"
res = email.send()
return HttpResponse('%s'%res)
EmailMessageクラス作成のパラメーターの詳細-
Subject −電子メールの件名。
message −HTML形式の電子メール本文。
from_email −からの電子メール。
to −受信者の電子メールアドレスのリスト。
bcc −「Bcc」受信者の電子メールアドレスのリスト。
connection −電子メールバックエンド。
ビューにアクセスするためのURLを作成しましょう-
from django.conf.urls import patterns, url
urlpatterns = paterns('myapp.views', url(r'^htmlemail/(?P<emailto>
[\w.%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4})/',
'sendHTMLEmail' , name = 'sendHTMLEmail'),)
/myapp/htmlemail/[email protected]にアクセスすると、次のようになります。
添付ファイル付きの電子メールの送信
これは、EmailMessageオブジェクトの「attach」メソッドを使用して実行されます。
添付ファイル付きのメールを送信するビューは次のようになります-
from django.core.mail import EmailMessage
from django.http import HttpResponse
def sendEmailWithAttach(request, emailto):
html_content = "Comment tu vas?"
email = EmailMessage("my subject", html_content, "[email protected]", emailto])
email.content_subtype = "html"
fd = open('manage.py', 'r')
email.attach('manage.py', fd.read(), 'text/plain')
res = email.send()
return HttpResponse('%s'%res)
アタッチ引数の詳細-
filename −添付するファイルの名前。
content −添付するファイルの内容。
mimetype −添付ファイルのコンテンツmimeタイプ。