【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>>
Django 1.6
虽然python提供了smtplib库,来完成email的发送功能,但是django对其进行了封装,使得发送邮件的接口变得更简单,更方便,django的封装位于django.core.mail
快速入门
from django.core.mail import send_mail
send_mail(
'Subject here', 'Here is the message.',
'from@example.com',
['to@example.com'], fail_silently=False)
subject here:邮件的标题
here is message:邮件的内容,只能是字符串,简单文本,要是想发送HTMl,多媒体。文件,后面会有专门的介绍
from@examplel:发送邮件者
[to@example.com]:接收邮件者,这是个列表,说明可以同时发送给多个人
需要注意的是,发送邮件时需要的 EMAIL_HOST , EMAIL_PORT ,EMAIL_HOST_USER , EMAIL_HOST_PASSWORD 需要settings设置,用来验证SMTP服务器的。
还有一个需要注意的事,发送邮件时,内容的编码。DEFAULT_CHARSET 由这个决定,也是在settings设置
send_mail()
send_mail(subject, message, from_email, recipient_list, fail_silently=False, auth_user=None,auth_password=None, connection=None)
subject:邮件标题
message: 内容
from_email: 谁发的邮件
recipient_list: 就是接收邮件者的列表
fail_silently=False:这个是用来显示发送邮件时,默认是False,如果是False,则发送失败时候,会抛出smtplib.SMTPException异常
auth_user=None:用来验证SMTP server的用户名,没有设置就用settings里的
auth_password=None:用来验证SMTP server的密码,没有设置就用settings里的
connection=None:这个用来设置具体发送邮件时时使用的连接后端,一般没人会去动。默认肯定使用django的发送邮件的后端了,详见 Email backends
send_mass_mail()
send_mass_mail(datatuple, fail_silently=False, auth_user=None, auth_password=None,connection=None)
这个用来处理大规模的邮件
datatuple 这是一个元祖,((),()) 一个()像下面这样
(subject, message, from_email, 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)
send_mass_mail() 和 send_mail()
这两个最大的不同就在于,
send_mail()发一个邮件,连接一次SMTP,意思就是一次发一次邮件找一次服务器去验证下连接
send_mass_mail() 从上面的例子中可以看出,好几封邮件一次性就发出去了,效率更高。
mail_admins()
mail_admins(subject, message, fail_silently=False, connection=None, html_message=None)
这是一个快速发给管理员邮件的方法
有一个问题是,管理员的邮件是什么,在哪那?
就在settings里
ADMINS = (
# ('Your Name', 'your_email@example.com')
)
subject:
这里和上面说的差不多,但有点区别,就是发给管理员的邮件主题时,会带个默认的前缀[django],你也可以再settings里设置 EMAIL_SUBJECT_PREFIX,设置一个你自己的前缀。
这个函数里似乎没有from_mail,其实是有的,在settings设置 SERVER_EMAI= “”
最重要的是这个html_message:可以为这两个值,text/plain, text/html 。看出来了吧,决定你发送邮件内容是什么文本,你要是发个页面带连接,图片的,html一些东西的,就得设置它了。
mail_managers()
mail_managers(subject, message, fail_silently=False, connection=None,html_message=None)
其实和mail_admins()差不多,就是发给谁的问题,这个是针对一个连接失效时,指定一个人并发送邮件,需要做两件事,一是在settings里设置MANAGERS =(# ('Your Name', 'your_email@example.com')),另一个是启用中间件BrokenLinkEmailsMiddleware
下面是官方文档上的两个例子,好好体会:
send_mail(
'Subject', 'Message.', 'from@example.com',
['john@example.com', 'jane@example.com']
)
datatuple = (
('Subject', 'Message.', 'from@example.com', ['john@example.com']),
('Subject', 'Message.', 'from@example.com', ['jane@example.com']),
)
send_mass_mail(datatuple)
以上这些都是只能发送简单text类型的邮件,
除了那个mail_admins()和mail_managers()
如果想发送html类型,以及文件,附件类型的需要class EmailMessage,请看第二部分。
来源:oschina
链接:https://my.oschina.net/u/940444/blog/278553