message.txt里是邮件正文
mybase.txt里是放’收件人’和’给收件人的附件’,这两个之间以空格分隔,如果’给收件人的附件’有多个,以’,‘分隔(半角)
mycontacts.txt里放收件人和邮箱,这两个之间以空格分隔
mybase.txt和mycontacts.txt里如果有多个收件人,换行即可
注1:mycontacts和mybase里的收件人姓名必须一致,不然会出错!可以不要求必须行一致,但建议一致,便于自己分清!
mymail.txt里放的是发件人的’姓名’,‘邮箱地址’,‘密码’,‘服务器地址’(注意是SMTP地址)
注2:发件人是QQ邮箱的话,SMTP地址自己百度,密码不是QQ密码!需要到qq邮箱设置里找到SMTP位置,通过短信获取一串专用密码!其它邮箱同理!
注3:本程序所发邮件,客户端收取都没有问题,但如果是通过outlook或foxmail收取邮件,且版本较老的话可能会发生附件丢失或者附件变成.dat文件之类的bug,目前没有解决办法!
2019年8月9日更新:
1、全部重构了一下,解决了中文附件部分邮箱无法显示的bug;
2、做了关键字搜索,使得不需要专门弄个附件索引了;
3、如果发件人姓名(也就是key)在附件文件夹中没有类似关键字文件,就直接跳过;
4、附件支持各种附件,不局限于jpg图片;
5、支持同时一份附件发给多个人。

文件夹内部情况如图(py程序可以删掉~):

邮件收人文件内的格式,注意这里的逗号是英文的,逗号后面加不加空格无所谓
**, **@189.cn, **@qq.com
**, **@qq.com

from smtplib import SMTP #邮件
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.base import MIMEBase #附件
from email import encoders #转码
from email.header import make_header
import os
import tracebackdef get_receiver():'''读取收件人列表,以{'千秋': ['**@189.cn', '**@qq.com'], '邮银': ['**@chinatelecom.cn']}的字典形态返回'''receiver_dict = {}with open('邮件收件人.txt', 'r') as contacts_file:for a_contact in contacts_file:temp_address_list = []a_contact_list = a_contact.split(',')name = a_contact_list[0].strip()for temp_address in a_contact_list[1:]:temp_address_list.append(temp_address.strip())receiver_dict[name] = temp_address_listreturn receiver_dictdef read_body(filename):'''导入邮件正文的内容'''with open(filename, 'r') as body_file:body_file_content = body_file.read()return body_file_contentdef put_attachment(file_name, msg):'''添加日报附件'''part = MIMEBase('attachment', 'octet-stream')file_route = attach_file + '\\' + file_namepart.set_payload(open(file_route, 'rb').read())encoders.encode_base64(part)part.add_header('Content-Disposition', 'attachment', filename="%s" % make_header([(file_name, 'UTF-8')]).encode('UTF-8')) #显示中文附件的话选这个msg.attach(part)#发件人邮箱和密码
try:MY_ADDRESS = '**@shtel.com.cn'myPass = '******' #发件人密码server = SMTP('mail.sh.ctc.com')server.starttls()server.login(MY_ADDRESS, myPass)path_this_file = os.path.abspath('.') + "\\"#获取邮件正文email_body = read_body('邮件正文.txt')print('>>>获取邮件正文成功!')#获取收件人列表receiver_dict = get_receiver()print('>>>获取收件人列表成功!')#获取附件列表attach_file = path_this_file + '群发附件'attach_list = os.listdir(attach_file)print('>>>获取附件列表成功!')for key, value in receiver_dict.items():msg = MIMEMultipart()msg['From'] = MY_ADDRESSreceivers = ','.join(value)msg['To'] = receiversmsg['Subject'] = key + '酬金清单'msg.attach(MIMEText(email_body))temp_pic_list = []for pic in attach_list:if key in pic:put_attachment(pic, msg)temp_pic_list.append(pic)if temp_pic_list:server.send_message(msg)print('>>>{}邮件发送成功!'.format(key))else:print('>>>{}因无附件,没有发送!'.format(key))server.quit()print('>>>所有邮件均已发送成功!')
except:traceback.print_exc()
finally:a = input("按回车键退出!")

通过Python将不同的附件发给不同的收件人相关推荐

  1. python中发送带附件的邮件,python SMTP实现发送带附件电子邮件

    本文实例为大家分享了python SMTP发送带附件电子邮件的具体代码,供大家参考,具体内容如下 可采用email模块发送电子邮件附件.发送一个未知MIME类型的文件附件其基本思路如下: 1. 构造M ...

  2. python自动下载邮件附件_Python批量下载电子邮件附件并汇总合并Excel文件

    原标题:Python批量下载电子邮件附件并汇总合并Excel文件 前几天在公众号搞了一波送书活动,详见福利:免费赠送240本Python教材,该文推送之后,立刻收到了大量的样书申请表,那么接下来的工作 ...

  3. 直播app源码,Python发文本/图片/附件邮件

    直播app源码,Python发文本/图片/附件邮件实现的相关代码 """ Python发文本/图片/附件邮件 """ import smtp ...

  4. Python 发送邮件时图片附件变为bin格式的解决方案

    如题,Python 发送邮件时图片附件可能会出现发送成功但图片格式变为bin格式的问题 对此,可以使用add_header()函数解决该问题 #6 添加图片 image_data = open('C: ...

  5. python自动下载邮件附件_Python 批量导出邮件附件 | 互联网笔记

    采用python 3 windows 环境可Anaconda进行一键安装环境, 此脚本适用用于下列状况 报表每日自动发送至邮箱,多邮箱每天需要登陆或使用客户端下载邮件 收集的资料手动下载太麻烦. 可在 ...

  6. python发邮件添加附件(十)

    #一.python发邮件添加附件 这是一个神奇的工具,要好好学哦 !!! import smtplib# 1.发送人账号 sendAddress = 'xxx@qq.com' # 2.发送人授权码 p ...

  7. Python SMTP 发送带附件电子邮件

    这里写链接内容 可采用email模块发送电子邮件附件.发送一个未知MIME类型的文件附件其基本思路如下: 1. 构造MIMEMultipart对象做为根容器 2. 构造MIMEText对象做为邮件显示 ...

  8. Python发送邮件(带附件)

    import smtplib                           #发送邮件模块 from email.mime.text import MIMEText    #定义邮件内容 fro ...

  9. python 发邮件-带附件-文本-html

    #!/usr/bin/python # encoding=utf-8 # Filename: send_email.py from email.mime.image import MIMEImage ...

  10. python含多个附件的邮件_Python发送带有多个图像附件的电子邮件

    我试图用Python发送一封带有多个图像附件的电子邮件.但是通过下面的代码,我可以在正文中包含第一个图像,但是第二个图像会作为附件附加到电子邮件中.有没有办法可以在HTML的主体中同时获得这两个图像? ...

最新文章

  1. 无监督学习最新研究:通过简单的「图像旋转」预测便可为图像特征学习提供强大监督信号
  2. Apache Shiro 使用手册(三)Shiro 授权
  3. 含类定义的完整python程序_Python——变量,运算,条件,循环
  4. caj在线阅读_用翻译软件快速阅读大量英文文献
  5. WWW 2021 | 通过强化学习控制对话式检索的风险
  6. 关于spring MVC中加载多个validator的方法。
  7. Java:使用Toxiproxy模拟各种连接问题
  8. phoenix Explain Plan 翻译
  9. php sphinx api调用,php调用Sphinx
  10. 前端笔记-使用vue绑定id使得组件更加灵活(在使用echarts时常用)
  11. Linux的概念与体系 6. Linux文本流(转载)
  12. error C2086: “int WINGDIAPI”: 重定义
  13. 关于两栏布局,三栏布局,一级点击三角触发select的onchange事件问题
  14. 使用std:sort和Eigen根据矩阵某一行/列元素对矩阵的行/列排序
  15. Ribbon 和 wowza 的集成开发
  16. ArcGIS之图斑净面积计算工具(支持二调,三调)
  17. linux脚本while死循环,shell编程之while死循环
  18. JavaScript数组方法slice()
  19. xposed绕过模拟器检测_绝地求生刺激战场怎么避开模拟器检测?避开模拟器检测方法分享...
  20. Flutter BLoC 用户登录

热门文章

  1. 单片机编程软件很简单(21),keil单片机编程软件编程事项介绍
  2. Vbs调用MsAgent组件,很有趣
  3. UTC时间如何转换成北京时间—C语言代码
  4. oracle bpm 教学视频,oracle BPM直接更新流程
  5. VMware15安装MAC(MAC OS 10.13)(OS X 10.14)原版可升级最新可解锁macOS Unlocker3.0(OS X 10.13)
  6. loadrunner11 中文破解版(附详细安装教程)
  7. php的UDP攻击,phpddos应对 最近新起一种udp flood的攻击形式
  8. 稳压二极管的工作原理及稳压二极管使用电路图
  9. java 单个session过期_session过期的三种方法
  10. java 图片合成pdf_Java将图片组合成PDF文件的方法