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程序可以删掉~):
邮件收人文件内的格式,注意这里的逗号是英文的,逗号后面加不加空格无所谓
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 traceback
def get_receiver():
'''读取收件人列表,以{'千秋': ['18930023842@189.cn', '532788667@qq.com'], '邮银': ['zhanglei1.sh@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_list
return receiver_dict
def read_body(filename):
'''导入邮件正文的内容'''
with open(filename, 'r') as body_file:
body_file_content = body_file.read()
return body_file_content
def put_attachment(file_name, msg):
'''添加日报附件'''
part = MIMEBase('attachment', 'octet-stream')
file_route = attach_file + '\\' + file_name
part.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 = 'qcc31700298@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_ADDRESS
receivers = ','.join(value)
msg['To'] = receivers
msg['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("按回车键退出!")
smtp.sendmail(strFrom, To, msgRoot.as_string())
注意啊:sendmail中的那个To是list,不是string,否则只能发给第一个人
1 设计要点
小猪在公司做出纳,干的活却包括了出纳、会计、结算专员等工作,周末都要被无奈在家加班,主要还没有加班费,简直是被公司严重压榨。每个月初都要给每个工长发预付款账单邮件,月中发结算款账单。重复性机械工作。
一个及格线上的程序员,最起码的觉悟就是将重复性的机械工作自动化,于是,在我花了一个多小时,帮她给一部分工长发了一次邮箱后,默默的回来写了这个脚本。
所以,设计要点就是一个字——...
python3 发送邮件携带附件(可携带多个不同格式的附件)
要了解SMTP的可以自行去百度,这里不做解释。
使用SMTP发送有邮件前要确保发件人的邮箱已开启SMTP服务。若发件人邮箱已开启此服务可跳过此教程直接参考代码。
一、163邮箱开启SMTP方式
1.登陆163邮箱网页版,进入"POP...
由于近期在协会举办了一场比赛,赛后需要将200份不同成绩单分别发给参赛者,为了方便,用python实现了该功能,并利用博客进行记录分享学习。
还是那句话,菜鸡菜笔,如有不正,还请大佬们不吝惜赐教!
第一阶段:前期准备
语言:python3
使用工具:pycharm
使用库:xlrd,xlwt,email,smtplib
第二阶段:代码实现与讲解
1.import
要实现该功能需作如下...
import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
#image包可以发送图片形式
工作需要,每个月都要群发邮件给不同team,邮件主题,cc信息等都根据team划分不同。手工发送经常用掉我大半时间,并且可能会有出错情况,想着还是写个小工具节省一些时间。
首先,需要在VBA 中添加Outlook的组件: Tools > References, 勾选”Microsoft Office 16.0 Object Library。截图如下:
设想是发送不同邮件给不同的人,并且添加的附件也不一样,因此在excel中,建立以下几项:
A1: Receiver Address #收件人邮箱,多
1、最近公司实现部分数据统计、分析的报表进行每天定时发送到相关人员的邮箱之中的配置代码被人为删除了,需要重新恢复该功能,由于原先是在linux上使用shell配置发送,实在是太繁琐,所以准备使用python来实现该功能,不过发现网上各种文档都是未经过整理,代码写的很不友善,比如发送多人的只能发送前一个邮箱,附件写死不灵活等等,故特写一遍比较记录。
主要会遇到的几个问题:
1、smtplib.S
1.导入第三方模块,发送电子邮件要用到的模块主要有smtplib,email两个。
import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.application import MIMEApplication
2.添加发件人...
addressee = 'test01@qq.com'+';'+'test02@jd.com'#收件人邮箱列表
cc = 'test02@163.com'+';'+'test03@alibaba.com'#抄送人邮件列表
mail_path ...
哇奥,fantastic baby…今天 老Amy 开始薅头发~还有啥宝贝没给大家亮出来…
就开始看到繁忙的 hr ,我设身处地的想,如果行政部门需要批量的给不同人员发送不同信息的邮件~是怎么来做的呢?emmm…或许excel、word和邮箱都有快捷的功能[原谅我布吉岛],可是万一用python更便捷呢?所以 老Amy 就开动了!
如下图,邮件.xlsx 文件中含有一些基本信息,而我们需要给不同的收件人邮箱发送对应的正文内容。
打BOSS第一版
最开始,我们不要把事情想的太复杂,而是先用 Py
modelike:
Python:初步完成IE浏览器的查询、点击和文件下载
cyber_1987:
Python:初步完成IE浏览器的查询、点击和文件下载
m0_58607645:
上海满五非唯一,非普通性住房计算
TheMoyWonder:
Python:爬取疫情每日数据
1234567***: