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 相关文章推荐
浅谈tensorflow1.0 池化层(pooling)和全连接层(dense)
Apr 27 Python
python根据url地址下载小文件的实例
Dec 18 Python
使用Python中的reduce()函数求积的实例
Jun 28 Python
Django models.py应用实现过程详解
Jul 29 Python
Python socket模块ftp传输文件过程解析
Nov 05 Python
简单介绍django提供的加密算法
Dec 18 Python
python隐藏类中属性的3种实现方法
Dec 19 Python
python实现录屏功能(亲测好用)
Mar 02 Python
python/golang实现循环链表的示例代码
Sep 14 Python
python 读取、写入txt文件的示例
Sep 27 Python
Python+Tkinter制作专属图形化界面
Apr 01 Python
Python图像处理库PIL详细使用说明
Apr 06 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
点评山进PR-D3L三波段收音机
2021/03/02 无线电
PHP+SQL 注入攻击的技术实现以及预防办法
2010/12/29 PHP
PHP中for与foreach的区别分析
2011/03/09 PHP
php变量范围介绍
2012/10/15 PHP
PHP的openssl加密扩展使用小结(推荐)
2016/07/18 PHP
PHP实现执行外部程序的方法详解
2017/08/17 PHP
在视频前插入广告
2006/11/20 Javascript
javascript之大字符串的连接的StringBuffer 类
2007/05/08 Javascript
excel操作之Add Data to a Spreadsheet Cell
2007/06/12 Javascript
js 文件引入实现代码
2010/04/23 Javascript
40个有创意的jQuery图片和内容滑动及弹出插件收藏集之二
2011/12/31 Javascript
JS判断当前日期是否大于某个日期的实现代码
2012/09/02 Javascript
原生javaScript实现图片延时加载的方法
2014/12/22 Javascript
Eclipse配置Javascript开发环境图文教程
2015/01/29 Javascript
详解Node.js包的工程目录与NPM包管理器的使用
2016/02/16 Javascript
KnockoutJS 3.X API 第四章之数据控制流with绑定
2016/10/10 Javascript
JS中from 表单序列化提交的代码
2017/01/20 Javascript
微信小程序 template模板详解及实例
2017/02/21 Javascript
vue与bootstrap实现时间选择器的示例代码
2017/08/26 Javascript
vue使用axios实现文件上传进度的实时更新详解
2017/12/20 Javascript
微信小程序商品详情页的底部弹出框效果
2020/11/16 Javascript
详解Chart.js轻量级图表库的使用经验
2018/05/22 Javascript
小程序实现投票进度条
2019/11/20 Javascript
vue实现两个组件之间数据共享和修改操作
2020/11/12 Javascript
深入了解Python数据类型之列表
2016/06/24 Python
Python3 webservice接口测试代码详解
2020/06/23 Python
css3 transform及原生js实现鼠标拖动3D立方体旋转
2016/06/20 HTML / CSS
一个基于canvas的移动端图片编辑器的实现
2020/10/28 HTML / CSS
护士的岗位职责
2013/12/04 职场文书
实习心得体会
2014/01/02 职场文书
党员干部反四风民主生活会对照检查材料思想汇报
2014/10/12 职场文书
贪污检举信范文
2015/03/02 职场文书
致地震灾区的慰问信
2015/03/23 职场文书
试用期解除劳动合同通知书
2015/04/16 职场文书
redis哨兵常用命令和监控示例详解
2021/05/27 Redis
OpenCV-Python实现图像平滑处理操作
2021/06/08 Python