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 相关文章推荐
在Django中管理Users和Permissions以及Groups的方法
Jul 23 Python
Python 字典与字符串的互转实例
Jan 13 Python
python基于http下载视频或音频
Jun 20 Python
python基于C/S模式实现聊天室功能
Jan 09 Python
详解python 3.6 安装json 模块(simplejson)
Apr 02 Python
Python实现堡垒机模式下远程命令执行操作示例
May 09 Python
Django框架 Pagination分页实现代码实例
Sep 04 Python
opencv 阈值分割的具体使用
Jul 08 Python
Scrapy基于scrapy_redis实现分布式爬虫部署的示例
Sep 29 Python
用Python实现职工信息管理系统
Dec 30 Python
Pytest allure 命令行参数的使用
Apr 18 Python
bat批处理之字符串操作的实现
Mar 16 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
基于Zend的Config机制的应用分析
2013/05/02 PHP
php_screw 1.5:php加密: 安装与使用详解
2013/06/20 PHP
Smarty模板引擎缓存机制详解
2016/05/23 PHP
JavaScript DOM学习第一章 W3C DOM简介
2010/02/19 Javascript
JSON 学习之JSON in JavaScript详细使用说明
2010/02/23 Javascript
初窥JQuery-Jquery简介 入门了解篇
2010/11/25 Javascript
jQuery UI Autocomplete 体验分享
2012/02/14 Javascript
jquery中使用$(#form).submit()重写提交表单无效原因分析及解决
2013/03/25 Javascript
javascript中的document.open()方法使用介绍
2013/10/09 Javascript
使用js操作css实现js改变背景图片示例
2014/03/10 Javascript
JavaScript实现获取dom中class的方法
2015/02/09 Javascript
Node.js实现JS文件合并小工具
2016/02/02 Javascript
ionic实现滑动的三种方式
2016/08/27 Javascript
深入浅析Vue组件开发
2016/11/25 Javascript
使用Vue.js开发微信小程序开源框架mpvue解析
2018/03/20 Javascript
vue router 源码概览案例分析
2018/10/09 Javascript
vue-cli 打包后提交到线上出现 &quot;Uncaught SyntaxError:Unexpected token&quot; 报错
2018/11/06 Javascript
Vue+Webpack完美整合富文本编辑器TinyMce的方法
2018/11/30 Javascript
vue自定义js图片碎片轮播图切换效果的实现代码
2019/04/28 Javascript
node中实现删除目录的几种方法
2019/06/24 Javascript
详解如何在Vue项目中发送jsonp请求
2019/10/25 Javascript
Python处理RSS、ATOM模块FEEDPARSER介绍
2015/02/18 Python
python常用函数详解
2016/09/13 Python
浅谈numpy库的常用基本操作方法
2018/01/09 Python
python3编写ThinkPHP命令执行Getshell的方法
2019/02/26 Python
django中间键重定向实例方法
2019/11/10 Python
canvas小画板之平滑曲线的实现
2020/08/12 HTML / CSS
加拿大大码女装购物网站:Penningtons
2020/12/26 全球购物
古汉语文学求职信范文
2014/03/16 职场文书
市级文明单位申报材料
2014/05/07 职场文书
活动总结书
2014/05/08 职场文书
基层党员对照检查材料
2014/08/25 职场文书
小学生国庆演讲稿
2014/09/05 职场文书
四风问题自查自纠工作情况报告
2014/10/28 职场文书
五四青年节活动总结
2015/02/10 职场文书
幼儿园端午节活动总结
2015/05/05 职场文书