问题描述:1. A向不认识的B、C、D发送了邮件,B、C、D业务繁忙,对于A的邮件可能不回复,但是A希望得到B、C、D的回复;
2. A的想法是在不删除收发邮件的基础上
第一天[手动],A向B、C、D发邮件,未得到回复
第二天[自动],发件箱的收件人列表[B、C、D],收件箱的发件人列表为[],目标列表[B、C、D],B回复
第三天[自动],发件箱的收件人列表[B、C、D、[B、C、D]],收件箱的发件人列表为[B],目标列表[C、D],C回复
第四天[自动],发件箱的收件人列表[B、C、D、[B、C、D]、[C、D]],收件箱的发件人列表为[B、C],目标列表[D],D不回复
......
第N天[自动],发件箱的收件人列表[B、C、D、[B、C、D]、[C、D]、D、D...D],收件箱的发件人列表为[B、C],目标列表[D],D不回复(可以手工终止)
3. A希望将以上自动部分做成定时任务,并尽可能的减少人工参与
工具环境:Win7(32bit) Python2.7
解决过程:1. 使用python imap收邮件模块检查邮箱中的发件人列表和收件人列表,发现有发件人列表有不在收件人列表的项,都记录下来,作为自动发邮件的目标
连接登陆服务器
mailServer = "imap.gmail.com" #imap收邮件模块的gmail服务器
mailPort = 993 #gmail的imap协议通信端口
mailUser = "XXXXX@gmail.com" #账户
mailPass = "XXXXX" #密码
imapConnect = imaplib.IMAP4_SSL(mailServer, mailPort) #以SSL的形式连接gmail服务
imapConnect.logout()imapConnect.login(mailUser, mailPass) #登陆
imapConnect.logout() #退出
取收件箱的发件人列表
imapConnect.select('INBOX') #进入收件箱
att, receiveItems = imapConnect.search(None, 'ALL')
fromList = [] #收件箱的发件人列表
for item in receiveItems[0].split():
pos, mailData = imapConnect.fetch(item, "(RFC822)")
receiveText = mailData[0][1]
receiveJson = email.message_from_string(receiveText)
pattern = re.compile(r"<(.*?)>", re.I|re.X) #python的正则表达式切割,真的很好用
fromList.extend(pattern.findall(receiveJson['From']))
获取发件箱的收件人列表
imapConnect.select('[Gmail]/&XfJT0ZCuTvY-') #进入发件箱
att, sentItems = imapConnect.search(None, 'ALL')
toList = [] #发件箱的收件人列表
for item in sentItems[0].split():
pos, mailData = imapConnect.fetch(item, "(RFC822)")
sentText = mailData[0][1]
sentJson = email.message_from_string(sentText)
toList.append(sentJson['To'])
对比收件人列表和发件人列表,获取未回复人的列表,作为目标
delList = [] #处理收件箱发件人列表中的子列表
for item in fromList:
itemList = item.split() #将发件人列表中的子列表变成发件人元素,注意是以空字符串切割(包括1个以上的空格字符)
if len(itemList) > 1:
delList.append(item)
fromList.extend(itemList) #将子列表的元素加入发件人列表
for rub in delList:
del fromList[fromList.index(rub)] #删除发件人列表中的子列表
delList = [] #处理发件箱收件人列表中的子列表
for item in toList:
itemList = item.split() #将收件人列表中的子列表变成收件人元素
if len(itemList) > 1:
delList.append(item)
toList.extend(itemList) #将子列表的元素加入收件人列表
for rub in delList:
del toList[toList.index(rub)] #删除收件人列表中的子列表
fromList = set(fromList) #变成集合,去除重复元素
toList = set(toList) #变成集合,去除重复元素
jobList = [] #获取未回复邮件的收件人列表,作为今天的发件对象
for item in toList:
if item not in fromList:
jobList.append(item)
特别注意,imapConnect.select('[Gmail]/&XfJT0ZCuTvY-')、imapConnect.select('INBOX'),这里的发件箱类型、收件箱类型....不同类型的邮箱代码也不一样,可以通过for item in imapConnect.list():print item.split('分隔符')[下标]获得
相关推荐
在群发邮件方面,Python的自动化功能可以帮助您快速、准确地发送大量邮件,节省您宝贵的时间和精力。首先,您可以使用Python的smtplib库来实现电子邮件的发送功能。通过编写简洁的代码,您可以轻松地连接到邮件...
Python+wxpy写的微信群发代码,由于微信的发送消息频率有限制,因此如果好友数量比较多,群发时间会比较长一点;
用 python 给gmail发送邮件. 用 python 接收gmail的送邮件
python subprocess 实现的定时任务系统源码.zip基于 python subprocess 实现的定时任务系统源码.zip基于 python subprocess 实现的定时任务系统源码.zip基于 python subprocess 实现的定时任务系统源码.zip基于 ...
本文将深入探讨如何使用Python编程语言来实现相对定向,这主要涉及到双像解析,即通过两幅或多幅影像之间的相关性来确定物体在三维空间中的位置。 相对定向的主要目标是建立两个或多个影像之间的几何关系,以便于...
本资源"群发邮件_python邮件_邮件群发_邮箱群发文件_邮箱群发文件_源码.zip"提供了一个关于如何使用Python进行邮件群发的示例代码,帮助开发者实现高效的邮件群发功能。 首先,Python中的`smtplib`库是用于发送邮件...
为了追求更加便捷的方式,在此基于Python编写了一个实现微信定时自动发送指定群消息。这里有两个文件,一个是主程序main.py,一个文本文件(txt)。txt是用来放入指定群聊名称,设置定时时间,编辑发送的消息内容。...
content = "这是一封来自Python的群发邮件示例。" send_email(smtp_server, port, sender, password, receivers, subject, content) ``` 在这个示例中,我们创建了一个`send_email`函数,它接受SMTP服务器地址、...
Python中实现定时任务可以使用多种方式,下面介绍两种常见的方法。 1. 使用第三方库schedule: schedule是一个简单易用的Python定时任务库,可以按照指定时间间隔或指定时间点执行任务。 首先,需要安装schedule库...
内容分三部分:1.爬取网上天气预报的信息;2.将该天气信息以邮件形式发送;3.定时执行前两部分内容。配有详细备注!
2.5 群发邮件 2.6 定时发送邮件 2.7 发送CSV文件的内容 3 利用Python读取邮件 3.1 读取全部邮件内容 3.2 读取未读的邮件 3.3 读取红旗(星级)邮件 3.3 读取某发件人的邮件 3.4 读取某收件人的邮件 3.5 将...
Python发邮件代码
本项目聚焦于使用Python来定时爬取微博某博主的主页,并筛选出包含特定关键字“哈罗”的微博,之后通过电子邮件将这些内容发送出去。这涉及到几个关键的技术点,下面我们将逐一详细讲解。 首先,我们要使用Python的...
本项目聚焦于“群发邮件”与“人员信息管理”,结合数据库操作,实现了一个功能完善的系统。以下是对这个系统及其相关知识点的详细阐述。 首先,人员信息管理是系统的核心部分,它涉及到数据库的设计与操作。数据库...
这个项目是利用Python编程语言,结合Android Debug Bridge(ADB)工具,为钉钉应用创建的一个自动化辅助程序,主要用于自动完成上下班打卡操作,并在打卡完成后通过电子邮件发送提醒通知。下面将详细解释其中涉及的...
通过这个项目,用户可以构建一个自定义的、可扩展的定时任务平台,不仅能够定时执行本地的Python脚本,还能跨越网络边界,对远程服务器进行自动化运维。这种工具在现代化的DevOps环境中具有广泛的应用价值,能够帮助...
在Python的Web开发中,Flask是一个轻量级且强大的框架,它允许开发者轻松地构建自己的Web应用。而当我们需要在Web应用中实现定时任务时,可以借助于ApScheduler库,它是一个强大的任务调度库,支持多种调度策略。...
在本项目中,"python 自动登录京东并定时抢购商品"是一个利用Python编程语言实现的自动化脚本,主要用于帮助用户在京东平台上自动登录并执行抢购操作。这个程序的关键在于网页自动化技术,特别是Selenium库的应用。...
较基础,适合python新手及对python感兴趣的同学阅读。 我们来理一遍这个程序,大概功能是:我们设置一个时间,时间到了以后会打开浏览器播放一段音频。 1。等待 2。打开浏览器,播放音频。 3。重复(1,2两步。因为...