在上次实现了批量修改文件名后(链接:https://zhuanlan.zhihu.com/p/133727520),又拿来了同事编写的一次性批量发邮件小程序,小编每月向分公司发数据任务算是基本上实现了自动化

需要新建2个.py文件实现,一个auto_email_module.py创建自动发邮件模块,一个auto _send_email.py执行自动发邮件。

auto_email_module.py代码:

from email.utils import parseaddr, formataddr
from email.header import Header
from email.mime.multipart import MIMEMultipart
from email.mime.application import MIMEApplication
from email.mime.text import MIMEText
import smtplibclass AutoEmail:def __init__(self):self.from_name = '默认发件人'self.from_mail = ''self.from_password = ''self.to_address = ''self.to_city = ''self.cc_address = ''self.subject = '默认主题'self.body = '%s默认正文'self.enclosure_names = '附件%s.txt'self.enclosure_affirm = ''  # 若不添加附件则非空def __set_send(self):smt_set = smtplib.SMTP_SSL('smtp.exmail.qq.com', 465)try:smt_set.login(self.from_mail, self.from_password)except:# print('账号或密码错误。')return '001'from_address = self.__format_address(self.from_name+'<'+self.from_mail)msg = MIMEMultipart()msg['Subject'] = self.subject % self.to_citymsg['From'] = from_addressmsg['Cc'] = self.__format_address(self.cc_address)msg['To'] = self.to_addressmsg.attach(MIMEText(self.body,'plain','utf-8'))if self.enclosure_affirm == '':try:for enclosure in self.enclosure_names.split(';'):try:enclosure_name = enclosure % self.to_cityexcept:enclosure_name = enclosureenclosure = MIMEApplication(open(enclosure_name, 'rb').read())enclosure.add_header('content-disposition', 'attachment', filename=('gbk', '', enclosure_name))msg.attach(enclosure)except:# print('未添加附件或附件设置有误')return '002'smt_set.sendmail(from_address, self.to_address.split(',') + self.cc_address.split(','), msg.as_string())smt_set.quit()def send_email(self, to_addresses):if to_addresses == {}:print('请添加收件人')else:i = 1body = self.bodyfor city_name, addresses in to_addresses.items():self.to_city = city_nametry:self.body = body % self.to_cityexcept:print('邮件正文应包含%s来区分')returnself.to_address = self.__format_address(addresses)print('正在发送第%d封邮件,发向%s' % (i,self.to_city))key = self.__set_send()if key == '001':print('账号或密码错误。')breakelif key == '002':print('未添加附件或附件设置有误')breakelse:print('发送成功')i += 1def __format_address(self, addr):addresses_str = ''for address in addr.split(';'):name, addr = parseaddr(address)if addresses_str == '':addresses_str = formataddr((Header(name, 'utf-8').encode(), addr))else:addresses_str = ','.join((formataddr((Header(name, 'utf-8').encode(), addr)), addresses_str))return addresses_str

auto _send_email.py 代码:

from auto_email_module import AutoEmailreceivers_dic = {'成都': '收件人A邮箱','绵阳': '收件人B邮箱','南京': '收件人C邮箱'
}a = AutoEmail()
a.from_name = '发件人'  a.from_mail = '发件人邮箱地址'  a.from_password = '发件人邮箱密码'  a.cc_address = '抄送人邮箱地址 'a.subject = '%s分公司3月数据'  # 邮件主题,可不设置。默认显示‘默认主题’a.body = '%s分公司:n' '   附件为分公司3月份数据,请查收! n' 'n***此邮件由小程序分发***'
# 邮件正文,%s必须,%s代表分公司名称,可不设置,默认显示‘%s默认正文’a.enclosure_names = '%s分公司.xlsx'  # 附件名称,默认添加附件发送a.enclosure_affirm = ''  # 默认添加附件,若不添加附件则添加‘no’,否则将报错a.send_email(receivers_dic)  # 发送邮件

done!

notes邮件正文显示不全_python实现一次性批量发邮件相关推荐

  1. notes邮件正文显示不全_Outlook邮件中的可操作消息(Actionable Message)

    邮件大家都不陌生,而且很可能它也是当前工作生活中应用最广的沟通方式之一了.据不完全统计,每月通过Office 365发送的邮件数量达到4700亿封. 近些年来,随着社会发展,逐渐有一个趋势就基于聊天( ...

  2. notes邮件正文显示不全_notes常见问题解决

    一.启动 NOTES, 出现 " 找不到上下文工具栏 " 解决:关闭 NOTES, 删除 bookmark.nsf 文件 , 然后重新启动 NOTES 即可 二.打开邮箱时,提示 ...

  3. 【排错】 Outlook邮件正文显示空白问题的排错

    症状: 在Outlook中查看接收到的邮件时,邮件正文为空. 排错步骤: 首先,建议您尝试从邮箱的网页版界面查看这封空白邮件.这个步骤有助于确定问题是不是只发生在Outlook桌面版客户端中. ▲如果 ...

  4. python自动批量发邮件脚本_批量群发,营销必备!Python代码实现自动发送邮件!...

    在运维开发中,使用 Python 发送邮件是一个非常常见的应用场景.今天一起来探讨一下,GitHub 的大牛门是如何使用 Python 封装发送邮件代码的. 一般发邮件方法SRE实战 互联网时代守护先 ...

  5. 如何在邮件正文显示自己的简历

    1.在word左上角点击"另存为",在弹出的窗口中把那满载你希望的简历转成"网页(*.htm;*.html)",如下图 2.用记事本打开转格式后的简历,如下图操 ...

  6. python发邮件图片太长显示不出来_Python电子邮件图像太长,无法显示,为什么Python在发送多图表电子邮件时只显示第一个图像?,python,发邮件,图片,不,出来,第一张...

    展开全部 #coding=utf-8 62616964757a686964616fe58685e5aeb931333337613862''' create this file Make it easi ...

  7. python自动批量发邮件脚本_Python实现自动发送邮件功能

    简单邮件传输协议(SMTP)是一种协议,用于在邮件服务器之间发送电子邮件和路由电子邮件.Python提供smtplib模块,该模块定义了一个SMTP客户端会话对象,可用于使用SMTP或ESMTP侦听器 ...

  8. python发邮件主机找不到_Python 使用QQ邮箱发邮件

    QQ邮箱太恶心了.经常改验证方式 阿福最近的脚本不能用了,研究了一上午. 终于研究出来了. def sendmail(data): content = data['content'] msg = MI ...

  9. python用outlook自动发邮件_python使用两种发邮件的方式smtp和outlook示例

    smtp是直接调用163邮箱的smtp服务器,需要在163邮箱中设置一下.outlook发送就是Python直接调用win32方式.调用程序outlook直接发送邮件. import win32com ...

最新文章

  1. 每天都用ArrayList,你读过它的源码么?
  2. mysql (master/slave)复制原理及配置
  3. 程序员都应该知道的 10 大算法
  4. Redis学习总结(3)——Redis整合Spring结合使用缓存实例
  5. warpctc error
  6. python切片读取数据_在Python中读取、切片和重组数据文件blockbyblock
  7. 写shell工具类,一个常用实例
  8. 保障电邮EMAIL通讯的安全性
  9. 2019年“深圳杯”数学建模挑战赛B题解题思路(一)
  10. 微软收购雅虎要中国政府审批?
  11. 无需建网站,不用发帖,持续获取搜索引擎流量的方法(灰白项目皆可)
  12. 用户参与度与活跃度的区别_如何使用色彩理论提高用户对应用程序的参与度
  13. 走进AI时代的文档识别技术 之文档重建
  14. 使用xiaopiu常见技巧
  15. 区块链超级记帐本架构概览
  16. PHP在线客服系统源码+H5+APP+搭建教程实例
  17. C++ GDAL/OGR 图层求交集Intersection
  18. python pdb_pdb-python
  19. 【书籍学习】史上最全的Java进阶书籍推荐
  20. Nmap脚本引擎原理

热门文章

  1. Cannot resolve symbol 'R',Failed to resolve: constraint-layout
  2. Android PopupWindow使用,下拉式PopupWindow,底部式PopupWindow
  3. 高德地图 amap 设置鼠标样式
  4. sqlserver 2008安装总是弹出重启提示
  5. 记事本和textarea中的换行
  6. java 2分代复制垃圾回收_Java对象的后事处理——垃圾回收(二)
  7. 小程序秒杀活动服务器,微信小程序官方上线张大仙周年活动,人数太多把服务器弄崩溃了...
  8. css3动画animation,transition
  9. java平面_java知识点整理
  10. 学习曾国藩,学做人做事学技术