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关闭windows进程的方法
Apr 18 Python
最基础的Python的socket编程入门教程
Apr 23 Python
Python下载指定页面上图片的方法
May 12 Python
python画图系列之个性化显示x轴区段文字的实例
Dec 13 Python
利用python实现简易版的贪吃蛇游戏(面向python小白)
Dec 30 Python
Django 权限认证(根据不同的用户,设置不同的显示和访问权限)
Jul 24 Python
python导入不同目录下的自定义模块过程解析
Nov 18 Python
python3 dict ndarray 存成json,并保留原数据精度的实例
Dec 06 Python
python通过安装itchat包实现微信自动回复收到的春节祝福
Jan 19 Python
python和php哪个更适合写爬虫
Jun 22 Python
浅析Python 多行匹配模式
Jul 24 Python
python线程优先级队列知识点总结
Feb 28 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中文本操作的类
2007/03/17 PHP
PHP循环输出指定目录下的所有文件和文件夹路径例子(简单实用)
2014/05/10 PHP
php+mysql实现数据库随机重排实例
2014/10/17 PHP
php基于SQLite实现的分页功能示例
2017/06/21 PHP
JavaScript 应用类库代码
2008/06/02 Javascript
Javascript的构造函数和constructor属性
2010/01/09 Javascript
Dom 学习总结以及实例的使用介绍
2013/04/24 Javascript
常用的JS验证和函数汇总
2014/12/23 Javascript
JS两个数组比较,删除重复值的巧妙方法(推荐)
2016/06/03 Javascript
用js写的一个路由(简单实例)
2016/09/24 Javascript
js 判断附件后缀的简单实现方法
2016/10/11 Javascript
浅谈AngularJS中ng-class的使用方法
2016/11/11 Javascript
对称加密与非对称加密优缺点详解
2017/02/06 Javascript
BootstrapValidator实现注册校验和登录错误提示效果
2017/03/10 Javascript
从vue基础开始创建一个简单的增删改查的实例代码(推荐)
2018/02/11 Javascript
mpvue小程序仿qq左滑置顶删除组件
2018/08/03 Javascript
angular组件间传值测试的方法详解
2020/05/07 Javascript
浅析VUE防抖与节流
2020/11/24 Vue.js
深入了解Vue动态组件和异步组件
2021/01/26 Vue.js
python中强大的format函数实例详解
2018/12/05 Python
Django url,从一个页面调到另个页面的方法
2019/08/21 Python
Python文件时间操作步骤代码详解
2020/04/13 Python
python urllib和urllib3知识点总结
2021/02/08 Python
Casetify官网:自制专属手机壳、iPad护壳和Apple Watch手表带
2018/05/09 全球购物
Canal官网:巴西女性时尚品牌
2019/10/16 全球购物
解释i节点在文件系统中的作用
2013/11/26 面试题
一份报关员的职业规划范文
2014/01/08 职场文书
2014大学生全国两会学习心得体会
2014/03/13 职场文书
小学生学雷锋演讲稿
2014/04/25 职场文书
个人作风建设剖析材料
2014/10/11 职场文书
2014年工商所工作总结
2014/12/09 职场文书
计算机专业自荐信范文
2015/03/26 职场文书
行政上诉状范文
2015/05/23 职场文书
2016年校园社会综合治理宣传月活动总结
2016/03/16 职场文书
描述鲁迅的名言整理,一生受用
2019/08/08 职场文书
为自由献出你的心脏!「进击的巨人展 FINAL」2022年6月在台开展
2022/04/13 日漫