Python读取指定日期邮件的实例


Posted in Python onFebruary 01, 2019

背景: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()第二个参数

以上这篇Python读取指定日期邮件的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python struct.unpack
Sep 06 Python
本地文件上传到七牛云服务器示例(七牛云存储)
Jan 11 Python
python使用正则表达式检测密码强度源码分享
Jun 11 Python
python实现汉诺塔递归算法经典案例
Mar 01 Python
Python Socket实现简单TCP Server/client功能示例
Aug 05 Python
Python基于递归算法实现的汉诺塔与Fibonacci数列示例
Apr 18 Python
Python3利用Dlib19.7实现摄像头人脸识别的方法
May 11 Python
Python实现iOS自动化打包详解步骤
Oct 03 Python
Django实现发送邮件功能
Jul 18 Python
django一对多模型以及如何在前端实现详解
Jul 24 Python
python匿名函数用法实例分析
Aug 03 Python
python将下载到本地m3u8视频合成MP4的代码详解
Nov 24 Python
Python 利用切片从列表中取出一部分使用的方法
Feb 01 #Python
对pandas通过索引提取dataframe的行方法详解
Feb 01 #Python
python 实现提取某个索引中某个时间段的数据方法
Feb 01 #Python
深入理解Python异常处理的哲学
Feb 01 #Python
python for 循环获取index索引的方法
Feb 01 #Python
对python For 循环的三种遍历方式解析
Feb 01 #Python
python使用for循环计算0-100的整数的和方法
Feb 01 #Python
You might like
php Try Catch异常测试
2009/03/01 PHP
php字符串函数学习之strstr()
2015/03/27 PHP
从sohu弄下来的flash中展示图片的代码
2007/04/27 Javascript
javascript 树控件 比较好用
2009/06/11 Javascript
JQuery 无废话系列教程(二) jquery实战篇上
2009/06/23 Javascript
js 事件处理函数间的Event物件是否全等
2011/04/08 Javascript
关于JAVASCRIPT urldecode URL解码的问题
2012/01/08 Javascript
JQquery的一些使用心得分享
2012/08/01 Javascript
JavaScript代码复用模式详解
2014/11/07 Javascript
浅谈Javascript中深复制
2014/12/01 Javascript
jQuery结合HTML5制作的爱心树表白动画
2015/02/01 Javascript
JavaScript模拟实现键盘打字效果
2015/06/29 Javascript
Bootstrap3使用typeahead插件实现自动补全功能
2016/07/07 Javascript
基于JavaScript中标识符的命名规则介绍
2018/01/06 Javascript
Angular整合zTree的示例代码
2018/01/24 Javascript
JS中call和apply函数用法实例分析
2018/06/20 Javascript
Node.js中读取TXT文件内容fs.readFile()用法
2018/10/10 Javascript
Vue组件实现触底判断
2019/06/26 Javascript
JS实现点星星消除小游戏
2020/03/24 Javascript
Python3.2模拟实现webqq登录
2016/02/15 Python
python3下使用cv2.imwrite存储带有中文路径图片的方法
2018/05/10 Python
详解Python使用Plotly绘图工具,绘制甘特图
2019/04/02 Python
Python 实现try重新执行
2019/12/21 Python
python如何爬取动态网站
2020/09/09 Python
通过CSS3的object-fit来调整图片适配尺寸的技巧简介
2016/02/27 HTML / CSS
美国演唱会订票网站:Ticketmaster美国
2017/10/05 全球购物
Shell如何接收变量输入
2012/09/24 面试题
写自荐信的注意事项
2014/03/09 职场文书
生育关怀行动实施方案
2014/03/26 职场文书
一年级学生评语
2014/04/23 职场文书
幼儿园端午节活动方案
2014/08/25 职场文书
2014年业务工作总结
2014/11/17 职场文书
单位接收函范文
2015/01/30 职场文书
放射科岗位职责
2015/02/14 职场文书
人事聘任通知
2015/04/21 职场文书
python的变量和简单数字类型详解
2021/09/15 Python