python3实现带多张图片、附件的邮件发送
本文实例为大家分享了python3实现多张图片附件邮件发送的具体代码,供大家参考,具体内容如下
直接上代码,没有注释!
fromemail.mime.textimportMIMEText fromemail.mime.imageimportMIMEImage fromemail.mime.multipartimportMIMEMultipart fromemail.headerimportHeader classMail(object): def__init__(self,host,nickname,username,password,postfix): self.host=host self.nickname=nickname self.username=username self.password=password self.postfix=postfix defsend_mail(self,to_list,subject,content,cc_list=[],encode='gbk',is_html=True,images=[]): me=str(Header(self.nickname,encode))+"<"+self.username+"@"+self.postfix+">" msg=MIMEMultipart() msg['Subject']=Header(subject,encode) msg['From']=me msg['To']=','.join(to_list) msg['Cc']=','.join(cc_list) ifis_html: mail_msg='' foriinrange(len(images)): mail_msg+=''%(i+1) msg.attach(MIMEText(content+mail_msg,'html','utf-8')) fori,img_nameinenumerate(images): withopen(img_name,'rb')asfp: img_data=fp.read() msg_image=MIMEImage(img_data) msg_image.add_header('Content-ID','
'%(i+1)) msg.attach(msg_image) #将图片作为附件 #image=MIMEImage(img_data,_subtype='octet-stream') #image.add_header('Content-Disposition','attachment',filename=images[i]) #msg.attach(image) else: msg_content=MIMEText(content,'plain',encode) msg.attach(msg_content) try: s=smtplib.SMTP() #s.set_debuglevel(1) s.connect(self.host) s.login(self.username,self.password) s.sendmail(me,to_list+cc_list,msg.as_string()) s.quit() s.close() returnTrue exceptExceptionase: print(e) returnFalse defsend_mail(to_list,title,content,cc_list=[],encode='utf-8',is_html=True,images=[]): content=' %s'%content m=Mail('smtp.163.com','TV-APPTEST','tvapp_qa','ujlnluutpfespgxz','163.com') m.send_mail(to_list,title,content,cc_list,encode,is_html,images) if__name__=='__main__': images=[ '1.png', '2.png', '3.png', '4.png', ] importtime title='newimages%s'%time.strftime('%H:%M:%S') content='thisisattachimages%s'%time.time() send_mail(['x@163.com'],title,content,['xx@163.com','xxx@163.com'],'utf-8',True,images)
后记
调试发送多张图片的时候遇到的问题:
用for循环生成的mail_msg,不能直接attach,需要和content一起attach
mail_msg='' foriinrange(len(images)): mail_msg+=''%(i+1) msg.attach(MIMEText(**content**+mail_msg,'html','utf-8'))
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。