django1.6 发送邮件(二)

The EmailMessage class

在第一部分中,send_mail()和send_mass_mail都是对EmailMessage类包装。有些高级功能这两个函数是提供不了的,需要自己建立一个EmailMessage类。 例如,隐匿抄送,文件附件等。

邮件中的BCC 和CC

Note:

BCC是隐匿抄送,CC是抄送,抄送给谁每个收件人可以看得到


class EmailMessage

def __init__(

                self, subject='', body='', from_email=None, to=None, bcc=None,

                 connection=None, attachments=None, headers=None, cc=None

                ):

上面初始化参数,

subject:字符串,邮件主题

body: 文本类型,邮件内容
from_email:字符串,发件人,如果实例化时,不提供,默认使用settings里的 DEFAULT_FROM_EMAIL 

to:一个列表,邮件接收者

bcc:列表或者元组,隐匿抄送者

connection:电子邮件后端实例,就是真正连接邮件服务器的实例,

attachments:列表   邮件的附件

hesders:字典     额外的头信息(这个暂时没看出来干嘛的,回头再研究下)

cc:列表或者元组   抄送者

样例:

email = EmailMessage(
                    'Hello', 'Body goes here', '[email protected]',
                    ['[email protected]', '[email protected]'], 
                    ['[email protected]'],
                    headers = {'Reply-To': '[email protected]'}
                )

email实例拥有的方法:

send():

    send(self, fail_silently=False):

发送邮件。fail_silently=False,发送邮件时出现错误,会引起一个异常,如果设置为True,会被忽略。


message():

暂时略



recipients()

    recipients(self):

return self.to + self.cc + self.bcc   可以看出来是收件人,包括抄送的和隐匿抄送的



attach():

    attach(self, filename=None, content=None, mimetype=None):

创建一个新的文件附件,并将其添加到邮件中,有两种方法可以调用。

    一是传递一个email.MIMEBase.MIMEBase 实例参数

    另一个是后面三个参数filename=None, content=None, mimetype=None

    filename代表附件名,content是附件的内容,mimetype是附件的形式,是html还是,png,还是PDF,等等

    这是一个例子,附件内是一张图片
    message.attach('design.png', img_data, 'image/png')



attach_file() :

    attach_file(self, path, mimetype=None):

    从参数可以看出来,指定一个文件路径,这个文件是就是附件了,至于mimetype,如果不指定,类型通过文件结尾获取。

message.attach_file('/images/weather_map.png')
mimetype没有指定,通过文件结尾获取就是png,所以就是'image/png'



发送一个完整邮件例子,邮件内容是html类型:

from django.core.mail import EmailMessage

from django.template import loader


subject = “邮件标题”

 email = loader.render_to_string(email_template_name, {“name”:"大狗熊"})#其实就是渲染模板,并替换模板中的变量

 msg = EmailMessage(subject,  email,  '[email protected]',  [[email protected]] )

 msg.content_subtype = "html"#设置邮件内容的MIME类型

 msg.send(fail_silently=False)




备注:

常见的MIME类型(通用型):

超文本标记语言文本 .html text/html

xml文档 .xml text/xml

XHTML文档 .xhtml application/xhtml+xml

普通文本 .txt text/plain

RTF文本 .rtf application/rtf

PDF文档 .pdf application/pdf

Microsoft Word文件 .word application/msword

PNG图像 .png image/png

GIF图形 .gif image/gif

JPEG图形 .jpeg,.jpg image/jpeg

au声音文件 .au audio/basic

MIDI音乐文件 mid,.midi audio/midi,audio/x-midi

RealAudio音乐文件 .ra, .ram audio/x-pn-realaudio

MPEG文件 .mpg,.mpeg video/mpeg

AVI文件 .avi video/x-msvideo

GZIP文件 .gz application/x-gzip

TAR文件 .tar application/x-tar


你可能感兴趣的:(django1.6 发送邮件(二))