Django 1.6html
虽然python提供了smtplib库,来完成email的发送功能,可是django对其进行了封装,使得发送邮件的接口变得更简单,更方便,django的封装位于django.core.mailpython
快速入门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)
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)spa
subject:邮件标题code
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(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_mail()发一个邮件,链接一次SMTP,意思就是一次发一次邮件找一次服务器去验证下链接
send_mass_mail() 从上面的例子中能够看出,好几封邮件一次性就发出去了,效率更高。
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(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,请看第二部分。