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 16 Python
Python中函数参数调用方式分析
Aug 09 Python
python实现websocket的客户端压力测试
Jun 25 Python
对Django 转发和重定向的实例详解
Aug 06 Python
django中上传图片分页三级联动效果的实现代码
Aug 30 Python
python3-flask-3将信息写入日志的实操方法
Nov 12 Python
Python实现使用dir获取类的方法列表
Dec 24 Python
python实现将列表中各个值快速赋值给多个变量
Apr 02 Python
Python生成器next方法和send方法区别详解
May 30 Python
Pytorch实验常用代码段汇总
Nov 19 Python
用Python自动清理电脑内重复文件,只要10行代码(自动脚本)
Jan 09 Python
Python 求向量的余弦值操作
Mar 04 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
雄兵连:天使彦天使彦为爱折翼,彦和炙心同时念动的誓言!
2020/03/02 国漫
PHP 获取远程文件内容的函数代码
2010/03/24 PHP
PHP下打开URL地址的几种方法小结
2010/05/16 PHP
PHP使用正则表达式实现过滤非法字符串功能示例
2018/06/04 PHP
php微信开发之关注事件
2018/06/14 PHP
JavaScript 事件属性绑定带参数的函数
2009/03/13 Javascript
Javascript remove 自定义数组删除方法
2009/10/20 Javascript
Array.prototype.slice.apply的使用方法
2010/03/17 Javascript
基于jQuery的输入框无值自动显示指定数据的实现代码
2011/01/24 Javascript
jquery 选择器引擎sizzle浅析
2013/02/06 Javascript
你必须知道的Javascript知识点之&quot;字面量和对应类型&quot;说明介绍
2013/04/23 Javascript
JavaScript中数组继承的简单示例
2015/07/29 Javascript
WEB前端开发都应知道的jquery小技巧及jquery三个简写
2015/11/15 Javascript
基于jquery实现页面滚动时顶部导航显示隐藏
2020/04/20 Javascript
jQuery使用cookie与json简单实现购物车功能
2016/04/15 Javascript
JS实现的跨浏览器解析XML文件实例
2016/06/21 Javascript
BootStrap实现邮件列表的分页和模态框添加邮件的功能
2016/10/13 Javascript
分分钟玩转Vue.js组件(二)
2017/03/01 Javascript
vue表单验证你真的会了吗?vue表单验证(form)validate
2019/04/07 Javascript
vue store之状态管理模式的详细介绍
2019/06/13 Javascript
vue路由守卫,限制前端页面访问权限的例子
2019/11/11 Javascript
javascript实现移动端触屏拖拽功能
2020/07/29 Javascript
Python3基础之基本数据类型概述
2014/08/13 Python
Python发送Email方法实例
2014/08/21 Python
Python中的异常处理相关语句基础学习笔记
2016/07/11 Python
python的构建工具setup.py的方法使用示例
2017/10/23 Python
python生成不重复随机数和对list乱序的解决方法
2018/04/09 Python
Python中三元表达式的几种写法介绍
2019/03/04 Python
python用pip install时安装失败的一系列问题及解决方法
2020/02/24 Python
如何配置关联Python 解释器 Anaconda的教程(图解)
2020/04/30 Python
详解python tkinter包获取本地绝对路径(以获取图片并展示)
2020/09/04 Python
优秀德育工作者事迹材料
2014/05/07 职场文书
2014年学生会生活部工作总结
2014/11/07 职场文书
2014年教学管理工作总结
2014/12/02 职场文书
小学教师岗位职责
2015/04/02 职场文书
解决goland 导入项目后import里的包报红问题
2021/05/06 Golang