1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > python发邮件带附件老是失败_利用python实现发送带附件的邮件

python发邮件带附件老是失败_利用python实现发送带附件的邮件

时间:2022-05-24 22:17:36

相关推荐

python发邮件带附件老是失败_利用python实现发送带附件的邮件

具体代码如下:

(相关推荐: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())

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。