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获取GY-85九轴模块信息示例
Dec 05 Python
使用Python的Tornado框架实现一个一对一聊天的程序
Apr 25 Python
python利用matplotlib库绘制饼图的方法示例
Dec 18 Python
python3使用requests模块爬取页面内容的实战演练
Sep 25 Python
python3获取两个日期之间所有日期,以及比较大小的实例
Apr 08 Python
Python实现确认字符串是否包含指定字符串的实例
May 02 Python
Python Scapy随心所欲研究TCP协议栈
Nov 20 Python
Linux下Python安装完成后使用pip命令的详细教程
Nov 22 Python
Python http接口自动化测试框架实现方法示例
Dec 06 Python
Python flask框架post接口调用示例
Jul 03 Python
python 如何引入协程和原理分析
Nov 30 Python
Pandas自定义选项option设置
Jul 25 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分页函数代码(简单实用型)
2010/12/02 PHP
session在PHP大型web应用中的使用
2011/06/25 PHP
Linux环境下搭建php开发环境的操作步骤
2013/06/17 PHP
php实现的Timer页面运行时间监测类
2014/09/24 PHP
php实现的zip文件内容比较类
2014/09/24 PHP
浅谈php和.net的区别
2014/09/28 PHP
thinkPHP js文件中U方法不被解析问题的解决方法
2016/12/05 PHP
Yii框架函数简单用法分析
2019/09/09 PHP
PHP设计模式之数据访问对象模式(DAO)原理与用法实例分析
2019/12/12 PHP
深入理解JavaScript作用域和作用域链
2011/10/21 Javascript
JavaScript实现向setTimeout执行代码传递参数的方法
2015/04/16 Javascript
JS获取图片高度宽度的方法分享
2015/04/17 Javascript
jQuery简单实现图片预加载
2015/04/20 Javascript
jquery实现倒计时功能
2015/12/28 Javascript
JS函数arguments数组获得实际传参数个数的实现方法
2016/05/28 Javascript
JS+WCF实现进度条实时监测数据加载量的方法详解
2017/12/19 Javascript
JavaScript 点击触发复制功能实例详解
2018/11/02 Javascript
Vue入门之数量加减运算操作示例
2018/12/11 Javascript
详解使用Nuxt.js快速搭建服务端渲染(SSR)应用
2019/03/13 Javascript
easyUI使用分页过滤器对数据进行分页操作实例分析
2020/06/01 Javascript
Python的类实例属性访问规则探讨
2015/01/30 Python
编写Python小程序来统计测试脚本的关键字
2016/03/12 Python
分析Python读取文件时的路径问题
2018/02/11 Python
python多线程调用exit无法退出的解决方法
2019/02/18 Python
python实现nao机器人手臂动作控制
2019/04/29 Python
python使用pygame实现笑脸乒乓球弹珠球游戏
2019/11/25 Python
Django数据结果集序列化并展示实现过程
2020/04/22 Python
python3用PyPDF2解析pdf文件,用正则匹配数据方式
2020/05/12 Python
Python经纬度坐标转换为距离及角度的实现
2020/11/01 Python
德国最大的拼图在线商店:Puzzle.de
2016/12/17 全球购物
以设计师精品品质提供快速时尚:Mostata
2019/05/10 全球购物
美国医生配方营养补充剂供应商:Healthy Directions
2019/07/10 全球购物
将时尚融入珠宝:Adornmonde
2019/10/17 全球购物
本科生求职简历的自我评价
2013/10/21 职场文书
学生会竞聘书范文
2014/03/31 职场文书
go类型转换及与C的类型转换方式
2021/05/05 Golang