django 1.6 发送邮件(一)

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(subjectmessagefrom_emailrecipient_listfail_silently=Falseauth_user=None,auth_password=Noneconnection=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()

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,请看第二部分。

相关文章
相关标签/搜索