Python读取指定日期邮件的实例
作者:试剑天下 时间:2023-05-28 17:20:01
背景:9月份有部分数据缺失,这部分数据在邮箱里,需要重新拉取,但是每天几百封邮件,总共有6、7万封邮件,使用stat()和retr(which)结合遍历很
耗时
基于如上背景,初始大致思路为:
使用二分法获取到需要恢复数据时间范围内的中间一个值,也就是第几封邮件,然后分两头遍历,
读取到所有需要的邮件
算法函数:
1、获取到邮件的时间,由于可能收到格林威治时间邮件,所以这里做了相应的处理
def getTimeStamp(cn):
messages=mailServer.retr(cn)[1]
mail = email.message_from_bytes('\n'.encode('utf-8').join(messages))
date=email.header.decode_header(mail.get('date'))
utcstr = date[0][0].replace('+00:00','')
global utcdatetime
try:
utcdatetime = datetime.datetime.strptime(utcstr, '%a, %d %b %Y %H:%M:%S +0000 (GMT)')
localdatetime = utcdatetime + datetime.timedelta(hours=+8)
localtimestamp = localdatetime.timestamp()
except:
utcdatetime = datetime.datetime.strptime(utcstr, '%a, %d %b %Y %H:%M:%S +0800')
localtimestamp = utcdatetime.timestamp()
return localtimestamp
2、二分法
bu_daytimestamp yesterdaytimestamp两个是需要补数据的时间戳
key_nums=0
mid2=mailCount
while 1==1:
mid=getTimeStamp(round(mailCount))
mid2=round(mid2/2)
if mid >bu_daytimestamp:
mailCount=mailCount-mid2
elif mid<yesterdaytimestamp:
mailCount=mailCount+mid2
elif mid <=bu_daytimestamp and mid >=yesterdaytimestamp:
key_nums=mailCount
break
print(mailCount)
print(key_nums)
这里只记录算法,后续遍历比较简单,就不展示了
解释下部分参数:
mailServer:登录后的邮箱
mailCount:总的邮件数量,来源于mailServer.stat()第二个参数
来源:https://blog.csdn.net/tcl415829566/article/details/78481932
标签:Python,日期,邮件
0
投稿
猜你喜欢
W3C 发布 XMLHttpRequest 工作草图
2008-04-28 13:00:00
vue实现价格日历效果
2023-07-02 17:01:14
python3读取excel文件只提取某些行某些列的值方法
2021-10-19 09:20:09
python递归调用中的坑:打印有值, 返回却None
2023-11-02 23:07:42
用MySQL做站点时如何记录未知错误的发生
2010-09-30 14:11:00
关于vue的element-ui web端引入高德地图并获取经纬度
2023-07-02 16:48:01
Python实现备份文件实例
2022-01-03 11:10:05
Python还能这么玩之用Python做个小游戏的外挂
2022-12-11 18:27:43
Python编程根据字典列表相同键的值进行合并
2023-09-29 20:10:54
python安装库的最详细方法(以安装pygame库为例)
2021-03-08 04:29:40
小系统单据自动生成存储过程
2024-01-16 23:16:17
VSCode远程连接其他主机的WSL2的问题
2022-07-05 05:24:19
JavaScript中实现依赖注入的思路分享
2024-04-28 09:50:16
浅谈python可视化包Bokeh
2021-10-23 21:07:54
Python数学建模学习模拟退火算法约束条件处理示例解析
2022-06-16 19:19:20
解决python2 绘图title,xlabel,ylabel出现中文乱码的问题
2022-05-27 16:06:04
matplotlib中legend位置调整解析
2023-07-17 03:00:44
Python基于分水岭算法解决走迷宫游戏示例
2021-08-04 17:41:37
Python提取PDF内容的方法(文本、图像、线条等)
2023-07-03 13:16:59
Pycharm安装第三方库时Non-zero exit code错误解决办法
2023-03-15 12:15:01