python3实现带多张图片、附件的邮件发送
2019-08-10 16:19
1106 查看
本文实例为大家分享了python3实现多张图片附件邮件发送的具体代码,供大家参考,具体内容如下
直接上代码,没有注释!
from email.mime.text import MIMEText from email.mime.image import MIMEImage from email.mime.multipart import MIMEMultipart from email.header import Header class Mail(object): def __init__(self, host, nickname, username, password, postfix): self.host = host self.nickname = nickname self.username = username self.password = password self.postfix = postfix def send_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) if is_html: mail_msg = '' for i in range(len(images)): mail_msg += '<p><img src="cid:image%d" height="240" width="320"></p>' % (i+1) msg.attach(MIMEText(content + mail_msg, 'html', 'utf-8')) for i, img_name in enumerate(images): with open(img_name, 'rb') as fp: img_data = fp.read() msg_image = MIMEImage(img_data) msg_image.add_header('Content-ID', '<image%d>' % (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() return True except Exception as e: print(e) return False def send_mail(to_list, title, content, cc_list=[], encode='utf-8', is_html=True, images=[]): content = '<pre>%s</pre>' % content m = Mail('smtp.163.com', 'TV-APP TEST', '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', ] import time title = 'new images %s' % time.strftime('%H:%M:%S') content = 'this is attach images %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 = '' for i in range(len(images)): mail_msg += '<p><img src="cid:image%d" height="240" width="320"></p>' % (i+1) msg.attach(MIMEText(**content** + mail_msg, 'html', 'utf-8'))
以上就是本文的全部内容,希望对大家的学习有所帮助
您可能感兴趣的文章:
相关文章推荐
- python 实现的发送邮件模板【普通邮件、带附件、带图片邮件】
- python爬虫实现带附件+html内容以及图片的邮件发送
- python之简单邮件发送(带附件、图片)
- python实现邮件发送完整代码(带附件发送方式)
- 用Python实现带附件发送邮件的功能
- 【Python】发送带文字图片附件的邮件
- JavaMail发送(带图片和附件)和接收邮件实现详解(四)
- JavaMail实现带附件和图片的邮件发送功能
- JavaMail实现带有附件、内嵌图片的邮件发送
- python应用系列教程——python使用smtp协议发送邮件:html文本邮件、图片邮件、文件附件邮件
- python发送包含html、图片、附件和链接的邮件
- python发送包含html、图片、附件和链接的邮件
- 二种python发送邮件实例讲解(python发邮件附件可以使用email模块实现)
- 二种python发送邮件实例讲解(python发邮件附件可以使用email模块实现)
- python发送包含html、图片、附件和链接的邮件
- 【Python】发送带文字图片附件的邮件
- python 实现发送邮件(图片和图表直接在文本区显示)
- java实现发送邮件可多个附件内嵌图片-commons-email使用
- Python中Django发送带图片和附件的邮件
- python实现发送邮件及附件功能