具体代码如下:
(相关推荐:python基础教程)fromdjango.templateimportloader
fromemail.mime.multipartimportMIMEMultipart
fromemail.mime.textimportMIMEText
fromemail.headerimportHeader
importsmtplib
importtraceback
classSendEmail(object):
"""
发送html邮件
"""
def__init__(self,mail_host,mail_port,mail_user,mail_pass,sender,to_list_email):
#创建邮件对象
self.msg=MIMEMultipart()
#邮箱服务地址
self.mail_host=mail_host
#邮箱端口号
self.mail_port=mail_port
#邮箱账号
self.mail_user=mail_user
#密码
self.mail_pass=mail_pass
#发送人
self.sender=sender
#收件人邮箱列表
self.to_list_email=to_list_email
defmake_html(self,base_html_path,**kwargs):
"""
:parambase_html_path:html模板文件路径
:param**kwargs:模板中的参数
:return:
"""
mail_html=loader.render_to_string(
template_name=base_html_path,
context={
#"id":tid,
**kwargs#传入模板文件的数据
}
)
returnmail_html
defadd_attachment(self,file_path):
"""
制作附件
:paramfile_path:
:return:
"""
withopen(file_path,'rb')asf:
content=f.read()
att=MIMEText(content,_subtype='plain',_charset='utf-8')
att["Content-Type"]='application/octet-stream'
att["Content-Disposition"]='attachment;filename=task_report.docx'
att.add_header("Content-Disposition","attachment",filename=("gbk","","{}".format(filename)))#如果文件名中有中文的话需设置
returnatt
defsend_html_email(self,base_html_path,subject,str_to,str_cc,file_path,**kwargs):
"""
:paramhtml:html文件对象
:paramsubject:邮件主题
:return:
"""
html=self.make_html(base_html_path,**kwargs)
self.msg.attach(MIMEText(str(html),'html'))
self.msg['from']=Header('安全测试平台','utf-8')
self.msg['Subject']=Header(subject,'utf-8')
self.msg["Accept-Language"]="zh-CN"
self.msg["Accept-Charset"]="ISO-8859-1,utf-8"
self.msg['to']=str_to#发送人str
self.msg['cc']=str_cc#抄送人str
#添加附件
att=self.add_attachment(file_path)
self.msg.attach(att)
#发送邮件
try:
server=smtplib.SMTP()
server.connect(self.mail_host,self.mail_port)
server.login(self.mail_user,self.mail_pass)
server.sendmail(self.sender,self.to_list_email,self.msg.as_string())
server.quit()
exceptException:
print(traceback.format_exc())