Django发送邮件
基本使用
from django.core.mail import send_mail
send_mail(
'Subject here',
'Here is the message.',
'from@example.com',
['to@example.com'],
fail_silently=False,
)
邮件是通过 SMTP 主机和端口发送的
由配置项 EMAIL_HOST
和 EMAIL_PORT
指定。
如果配置了 EMAIL_HOST_USER
和 EMAIL_HOST_PASSWORD
那么它们将被用来验证 SMTP 服务器。
配置项 EMAIL_USE_TLS
和 EMAIL_USE_SSL
控制是否使用安全连接
通过 django.core.mail
发送的邮件的字符编码由 DEFAULT_CHARSET
设置项指定
发送邮件函数
send_mail()
send_mail
(subject, message, from_email, recipient_list, fail_silently=False, auth_user=None, auth_password=None, connection=None, html_message=None)
在大多数情况里,你可以使用 django.core.mail.send_mail()
来发送邮件。
参数 subject
, message
, from_email
和 recipient_list
是必须的。
subject
: 一个字符串。message
: 一个字符串。from_email
:字符串。如果为None
,Django 将使用DEFAULT_FROM_EMAIL
设置的值。recipient_list
: 一个字符串列表,每项都是一个邮箱地址。recipient_list
中的每个成员都可以在邮件的 “收件人:” 中看到其他的收件人。fail_silently
: 一个布尔值。若为False
,send_mail()
会在发生错误时抛出smtplib.SMTPException
。可在smtplib
文档找到一系列可能的异常,它们都是SMTPException
的子类。auth_user
: 可选的用户名,用于验证登陆 SMTP 服务器。 若未提供,Django 会使用EMAIL_HOST_USER
指定的值。auth_password
: 可选的密码,用于验证登陆 SMTP 服务器。若未提供, Django 会使用EMAIL_HOST_PASSWORD
指定的值。connection
: 可选参数,发送邮件使用的后端。若未指定,则使用默认的后端。查询 邮件后端文档获取更多细节。html_message
: 若提供了html_message
,会使邮件成为 multipart/alternative 的实例,message
的内容类型则是 text/plain ,并且html_message
的内容类型是 text/html 。
返回值会是成功发送的信息的数量(只能是 0
或 1
,因为同时只能发送一条消息)。
send_mass_mail()
send_mass_mail
(datatuple, fail_silently=False, auth_user=None, auth_password=None, connection=None)
django.core.mail.send_mass_mail()
用于批量发送邮件。
datatuple
是一个元组,形式如下:
(subject, message, from_email, recipient_list)
fail_silently
, auth_user
和 auth_password
拥有在 send_mail()
中一样的功能。
datatuple
参数的每个元素会生成一份独立的邮件内容。就像 send_mail()
中的一样, recipient_list
中的每个收件人会在邮件的 “收件人:” 中看到其他收件人的地址一样。
举个例子,以下代码会向两个不同的收件人列表发送两封不同的邮件,却复用了同一条连接:
message1 = ('Subject here', 'Here is the message', 'from@example.com', ['first@example.com', 'other@example.com'])
message2 = ('Another Subject', 'Here is another message', 'from@example.com', ['second@test.com'])
send_mass_mail((message1, message2), fail_silently=False)
返回值是成功发送的消息的数量。