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输出当前目录下index.html文件路径的方法
Apr 28 Python
Python命令启动Web服务器实例详解
Feb 23 Python
matplotlib 输出保存指定尺寸的图片方法
May 24 Python
python ddt数据驱动最简实例代码
Feb 22 Python
python使用原始套接字发送二层包(链路层帧)的方法
Jul 22 Python
解决jupyter notebook显示不全出现框框或者乱码问题
Apr 09 Python
详解python实现可视化的MD5、sha256哈希加密小工具
Sep 14 Python
用python写一个带有gui界面的密码生成器
Nov 06 Python
python 实现倒计时功能(gui界面)
Nov 11 Python
python3 通过 pybind11 使用Eigen加速代码的步骤详解
Dec 07 Python
Python xlwings插入Excel图片的实现方法
Feb 26 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 simplexmlElement操作xml的命名空间实现代码
2011/01/04 PHP
php分页思路以及在ZF中的使用
2012/05/30 PHP
PHP页面间传递值和保持值的方法
2016/08/24 PHP
PHP获取链表中倒数第K个节点的方法
2018/01/18 PHP
javascript在一段文字中的光标处插入其他文字
2007/08/26 Javascript
关于document.cookie的使用javascript
2008/04/11 Javascript
非阻塞动态加载javascript广告实现代码
2010/11/17 Javascript
Javascript中的this绑定介绍
2011/09/22 Javascript
Javascript中 关于prototype属性实现继承的原理图
2013/04/16 Javascript
js动态设置鼠标事件示例代码
2013/10/30 Javascript
jquery.ajax的url中传递中文乱码问题的解决方法
2014/02/07 Javascript
JavaScript中的replace()方法使用详解
2015/06/06 Javascript
js利用clipboardData实现截屏粘贴功能
2016/10/12 Javascript
angular-cli修改端口号【angular2】
2017/04/19 Javascript
Vue2.0实现将页面中表格数据导出excel的实例
2017/08/09 Javascript
在react中使用vuex的示例代码
2018/07/30 Javascript
jQuery常见的遍历DOM操作详解
2018/09/05 jQuery
vue动画之点击按钮往上渐渐显示出来的实例
2018/09/29 Javascript
jQuery实现的中英文切换功能示例
2019/01/11 jQuery
Python实现获取某天是某个月中的第几周
2015/02/11 Python
python定时检查某个进程是否已经关闭的方法
2015/05/20 Python
Python中的数据对象持久化存储模块pickle的使用示例
2016/03/03 Python
Python算法应用实战之队列详解
2017/02/04 Python
Python tkinter事件高级用法实例
2018/01/31 Python
Python入门必须知道的11个知识点
2018/03/21 Python
使用django-guardian实现django-admin的行级权限控制的方法
2018/10/30 Python
Python使用sax模块解析XML文件示例
2019/04/04 Python
浅析NumPy 切片和索引
2020/09/02 Python
商务英语专业自荐信
2013/10/14 职场文书
创业计划书中包含的9个方面
2013/12/26 职场文书
通知书大全
2015/04/27 职场文书
2016年元旦致辞
2015/08/01 职场文书
吧主申请感言怎么写
2015/08/03 职场文书
React如何创建组件
2021/06/27 Javascript
Javascript中async与await的捕捉错误详解
2022/03/03 Javascript
10大幻兽系恶魔果实 蝙蝠果实上榜,第一自愈能力强
2022/03/18 日漫