在第一部分中,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