python 发送邮件的四种方法汇总
这里针对smtplib做了一系列封装,可以完成以下四种场景:
- 发送纯文本的邮件
- 发送html页面的邮件
- 发送带附件文件的邮件
- 发送能展示图片的邮件
以上四种场景,已经做好了二次封装,经测试OK,使用时直接传入对应参数即可,直接上代码
importsmtplib
fromemail.mime.textimportMIMEText
fromemail.mime.imageimportMIMEImage
fromemail.mime.applicationimportMIMEApplication
fromemail.mime.multipartimportMIMEMultipart
classSendEMail(object):
"""封装发送邮件类"""
def__init__(self,host,port,msg_from,pwd):
self.msg_from=msg_from
self.password=pwd
#邮箱服务器地址和端口
self.smtp_s=smtplib.SMTP_SSL(host=host,port=port)
#发送方邮箱账号和授权码
self.smtp_s.login(user=msg_from,password=pwd)
defsend_text(self,to_user,content,subject,content_type='plain'):
"""
发送文本邮件
:paramto_user:对方邮箱
:paramcontent:邮件正文
:paramsubject:邮件主题
:paramcontent_type:内容格式:'plain'or'html'
:return:
"""
msg=MIMEText(content,_subtype=content_type,_charset="utf8")
msg["From"]=self.msg_from
msg["To"]=to_user
msg["subject"]=subject
self.smtp_s.send_message(msg,from_addr=self.msg_from,to_addrs=to_user)
defsend_file(self,to_user,content,subject,reports_path,filename,content_type='plain'):
"""
发送带文件的邮件
:paramto_user:对方邮箱
:paramcontent:邮件正文
:paramsubject:邮件主题
:paramreports_path:文件路径
:paramfilename:邮件中显示的文件名称
:paramcontent_type:内容格式
"""
file_content=open(reports_path,"rb").read()
msg=MIMEMultipart()
text_msg=MIMEText(content,_subtype=content_type,_charset="utf8")
msg.attach(text_msg)
file_msg=MIMEApplication(file_content)
file_msg.add_header('content-disposition','attachment',filename=filename)
msg.attach(file_msg)
msg["From"]=self.msg_from
msg["To"]=to_user
msg["subject"]=subject
self.smtp_s.send_message(msg,from_addr=self.msg_from,to_addrs=to_user)
defsend_img(self,to_user,subject,content,filename,content_type='html'):
'''
发送带图片的邮件
:paramto_user:对方邮箱
:paramsubject:邮件主题
:paramcontent:邮件正文
:paramfilename:图片路径
:paramcontent_type:内容格式
'''
subject=subject
msg=MIMEMultipart('related')
#Html正文必须包含
content=MIMEText(content,_subtype=content_type,_charset="utf8")
msg.attach(content)
msg['Subject']=subject
msg['From']=self.msg_from
msg['To']=to_user
withopen(filename,"rb")asfile:
img_data=file.read()
img=MIMEImage(img_data)
img.add_header('Content-ID','imageid')
msg.attach(img)
self.smtp_s.sendmail(self.msg_from,to_user,msg.as_string())
以上就是python发送邮件的四种方法汇总的详细内容,更多关于python发送邮件的资料请关注毛票票其它相关文章!