python3实现带多张图片、附件的邮件发送


Posted in Python onAugust 10, 2019

本文实例为大家分享了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程序的方法
Apr 21 Python
python使用win32com库播放mp3文件的方法
May 30 Python
Python的Django框架中settings文件的部署建议
May 30 Python
详解python单例模式与metaclass
Jan 15 Python
以一个投票程序的实例来讲解Python的Django框架使用
Feb 18 Python
Python 中pandas.read_excel详细介绍
Jun 23 Python
Python实现的视频播放器功能完整示例
Feb 01 Python
DataFrame:通过SparkSql将scala类转为DataFrame的方法
Jan 29 Python
python操作微信自动发消息的实现(微信聊天机器人)
Jul 14 Python
python批量检查两个对应的txt文件的行数是否一致的实例代码
Oct 31 Python
scrapy redis配置文件setting参数详解
Nov 18 Python
请求模块urllib之PYTHON爬虫的基本使用
Apr 08 Python
python实现邮件自动发送
Aug 10 #Python
python爬取百度贴吧前1000页内容(requests库面向对象思想实现)
Aug 10 #Python
python正则爬取某段子网站前20页段子(request库)过程解析
Aug 10 #Python
Django项目主urls导入应用中views的红线问题解决
Aug 10 #Python
Python中的 sort 和 sorted的用法与区别
Aug 10 #Python
Python测试模块doctest使用解析
Aug 10 #Python
Django发送邮件和itsdangerous模块的配合使用解析
Aug 10 #Python
You might like
基于PHP magic_quotes_gpc的使用方法详解
2013/06/24 PHP
PHP防盗链代码实例
2014/08/27 PHP
laravel实现上传图片并在页面显示的例子
2019/10/14 PHP
短信提示使用 特效
2007/01/19 Javascript
向大师们学习Javascript(视频与PPT)
2009/12/27 Javascript
clientX,pageX,offsetX,x,layerX,screenX,offsetLeft区别分析
2010/03/12 Javascript
JavaScript中setAttribute用法介绍
2013/07/20 Javascript
js页面跳转的问题(跳转到父页面、最外层页面、本页面)
2013/08/14 Javascript
js给页面加style无效果的解决方法
2014/01/20 Javascript
jQuery简单图表peity.js使用示例
2014/05/02 Javascript
jquery插件jquery.dragscale.js实现拖拽改变元素大小的方法(附demo源码下载)
2016/02/25 Javascript
原生JS下拉加载插件分享
2016/12/26 Javascript
javaScript+turn.js实现图书翻页效果实例代码
2017/02/16 Javascript
Node.js 使用递归实现遍历文件夹中所有文件
2017/09/18 Javascript
一个简易时钟效果js实现代码
2020/03/25 Javascript
Vue中的混入的使用(vue mixins)
2018/06/01 Javascript
JavaScript实现正则去除a标签并保留内容的方法【测试可用】
2018/07/18 Javascript
python获取mp3文件信息的方法
2015/06/15 Python
python3中dict(字典)的使用方法示例
2017/03/22 Python
Python numpy生成矩阵、串联矩阵代码分享
2017/12/04 Python
Python在Matplotlib图中显示中文字体的操作方法
2019/07/29 Python
Window10下python3.7 安装与卸载教程图解
2019/09/30 Python
Python中求对数方法总结
2020/03/10 Python
Python如何创建装饰器时保留函数元信息
2020/08/07 Python
酒店总经理欢迎词
2014/01/15 职场文书
即将毕业大学生自荐信
2014/01/24 职场文书
预备党员2014全国两会学习心得体会
2014/03/10 职场文书
《老山界》教学反思
2014/04/08 职场文书
汽车专业求职信
2014/06/05 职场文书
建筑结构施工求职信
2014/07/11 职场文书
年度安全生产目标责任书
2014/07/23 职场文书
超市周年庆活动方案
2014/08/16 职场文书
幼儿园教师暑期培训心得体会
2016/01/09 职场文书
实习报告范文之电话客服岗位
2019/07/26 职场文书
教你利用python实现企业微信发送消息
2021/05/23 Python
python实现学员管理系统(面向对象版)
2022/06/05 Python