django 1.6 发送邮件(一)

二次信任 提交于 2019-12-25 14:47:48

【推荐】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(subjectmessagefrom_emailrecipient_listfail_silently=Falseauth_user=None,auth_password=Noneconnection=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(datatuplefail_silently=Falseauth_user=Noneauth_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(subjectmessagefail_silently=Falseconnection=Nonehtml_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(subjectmessagefail_silently=Falseconnection=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,请看第二部分。



易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!