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中函数的参数传递
Jun 21 Python
Unicode和Python的中文处理
Mar 19 Python
基于ID3决策树算法的实现(Python版)
May 31 Python
深入理解Python中的super()方法
Nov 20 Python
Flask框架学习笔记之表单基础介绍与表单提交方式
Aug 12 Python
python线程join方法原理解析
Feb 11 Python
python读取文件指定行内容实例讲解
Mar 02 Python
django template实现定义临时变量,自定义赋值、自增实例
Jul 12 Python
Python如何实现线程间通信
Jul 30 Python
python元组拆包实现方法
Feb 28 Python
Pytest实现setup和teardown的详细使用详解
Apr 17 Python
opencv用VS2013调试时用Image Watch插件查看图片
Jul 26 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
Laravel如何创建服务器提供者实例代码
2019/04/15 PHP
thinkphp5框架实现的自定义扩展类操作示例
2019/05/16 PHP
前台js对象在后台转化java对象的问题探讨
2013/12/20 Javascript
Node.js和PHP根据ip获取地理位置的方法
2014/03/14 Javascript
js 动态为textbox添加下拉框数据源的方法
2014/04/24 Javascript
让人蛋疼的JavaScript语法特性
2014/09/30 Javascript
js实现屏幕自适应局部代码分享
2015/01/30 Javascript
jQuery+AJAX实现网页无刷新上传
2015/02/22 Javascript
AngularJS实现按钮提示与点击变色效果
2016/09/07 Javascript
ES6学习教程之Map的常用方法总结
2017/08/03 Javascript
Node.js 使用jade模板引擎的示例
2018/05/11 Javascript
JavaScript设计模式之建造者模式实例教程
2018/07/02 Javascript
JavaScript设计模式之装饰者模式定义与应用示例
2018/07/25 Javascript
createObjectURL方法实现本地图片预览
2019/09/30 Javascript
JQuery中的常用事件、对象属性与使用方法分析
2019/12/23 jQuery
python使用PyCharm进行远程开发和调试
2017/11/02 Python
python中set()函数简介及实例解析
2018/01/09 Python
python实现顺时针打印矩阵
2019/03/02 Python
Windows上安装tensorflow  详细教程(图文详解)
2020/02/04 Python
Pytorch环境搭建与基本语法
2020/06/03 Python
css3media响应式布局实例
2016/07/08 HTML / CSS
西班牙英格列斯百货法国官网:El Corte Inglés法国
2017/07/09 全球购物
英国第一的市场和亚马逊替代品:OnBuy
2019/03/16 全球购物
Nike加拿大官网:Nike.com (CA)
2019/04/09 全球购物
super()与this()的区别
2016/01/17 面试题
高中毕业生自我鉴定例文
2013/12/29 职场文书
作弊检讨书1000字
2014/02/01 职场文书
暑期社会实践感言
2014/02/25 职场文书
网络营销策划方案
2014/06/04 职场文书
数学教研活动总结
2014/07/02 职场文书
合作协议书模板2014
2014/09/26 职场文书
部门群众路线教育实践活动对照检查材料思想汇报
2014/10/07 职场文书
孕妇离婚协议书范本
2014/11/20 职场文书
2016会计专业自荐信范文
2016/01/28 职场文书
经销商会议开幕词
2016/03/04 职场文书
导游词之河北邯郸
2019/09/12 职场文书