使用Python3 poplib模块删除服务器多天前的邮件实现代码


Posted in Python onApril 24, 2020

背景:

因为工作需要,公司给每个员工都分配了一个邮箱 公司的各种业务都通过邮箱发送。虽然给每个员工的电脑都设置pop3登录但是他们的程序设定有保存服务器副本,所以大量邮件使得服务器存储占用巨大。

删除服务器上多天前的邮件

实现:

  • 使用 Python poplib 进行删除查看操作
  • 使用email.parser 进行内容解析
  • 使用 dateutil.parser 做邮件日期转换

代码

# -*- coding: UTF-8 -*-
import poplib
import datetime
import dateutil.parser
from email.parser import Parser
from parser import ParserError

def deleteMail(days = 30):
 mailServer = poplib.POP3('mail.sunyieh.com', 110)
 mailServer.user('mis.cq@sunyieh.com')
 mailServer.pass_('password')
 mStat = mailServer.stat()
 print(mStat )#连接状态
 mailTotal = mStat[0]#邮件总数
 print("邮箱总邮件数量:{},占用{}b".format(mStat[0],mStat[1]))
 print(mailServer.getwelcome())

 # 使用list()返回所有邮件的编号,默认为字节类型的串
 resp, mails, octets = mailServer.list()
 print("响应信息: ", resp)
 print("list方法返回数据大小(字节): {}b".format( octets))
 for i in range(mailTotal):
  resp, mailContent, octets = mailServer.retr(i+1)
  # 可以获得整个邮件的原始文本:
  msg_content = Parser().parsestr(b'\r\n'.join(mailContent).decode("iso8859",""))
  dateStr = msg_content.get("Date","")
  print("日期字符串:",dateStr)
  try:
   maildate =dateutil.parser.parse(dateStr)
   # 判断多少天前的邮件
   if maildate.date() < datetime.datetime.now().date() - datetime.timedelta(days=days):
    print("正在删除邮件 第{}封,邮件日期:{} {}".format(i+1,maildate.date(),maildate.time()))
    mailServer.dele(i + 1)
   else:
    # 删除完成
    print("完成删除,本次共计删除{}封邮件!".format(i))
    break
  except ParserError:
   print("正在删除邮件 第{}封,邮件日期:没有".format(i + 1))
   mailServer.dele(i + 1)
 print("正在保存本次操作!")
 mailServer.quit()
 print("ok!")
if __name__ == "__main__":
 deleteMail(30)

效果

使用Python3 poplib模块删除服务器多天前的邮件实现代码

到此这篇关于使用Python3 poplib模块删除服务器多天前的邮件的实现代码的文章就介绍到这了,更多相关Python3 poplib模块删除邮件内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python运行报错UnicodeDecodeError的解决方法
Jun 07 Python
python检测空间储存剩余大小和指定文件夹内存占用的实例
Jun 11 Python
pygame实现俄罗斯方块游戏
Jun 26 Python
Pycharm 设置默认头的图文教程
Jan 17 Python
Python中psutil的介绍与用法
May 02 Python
python调用摄像头拍摄数据集
Jun 01 Python
python爬取盘搜的有效链接实现代码
Jul 20 Python
Python 共享变量加锁、释放详解
Aug 28 Python
Pytorch实现基于CharRNN的文本分类与生成示例
Jan 08 Python
基于Python词云分析政府工作报告关键词
Jun 02 Python
python中常用的数据结构介绍
Jan 12 Python
Python 调用C++封装的进一步探索交流
Mar 04 Python
python实现读取类别频数数据画水平条形图案例
Apr 24 #Python
pandas中的ExcelWriter和ExcelFile的实现方法
Apr 24 #Python
Python内存映射文件读写方式
Apr 24 #Python
pandas的resample重采样的使用
Apr 24 #Python
python实现在内存中读写str和二进制数据代码
Apr 24 #Python
pandas DataFrame 数据选取,修改,切片的实现
Apr 24 #Python
pandas数据选取:df[] df.loc[] df.iloc[] df.ix[] df.at[] df.iat[]
Apr 24 #Python
You might like
php项目打包方法
2008/02/18 PHP
PHP生成网页快照 不用COM不用扩展.
2010/02/11 PHP
php的zip解压缩类pclzip使用示例
2014/03/14 PHP
ThinkPHP文件上传实例教程
2014/08/22 PHP
PHP在线书签系统分享
2016/01/04 PHP
如何直接访问php实例对象中的private属性详解
2017/10/12 PHP
再谈Yii Framework框架中的事件event原理与应用
2020/04/07 PHP
Knockoutjs快速入门(经典)
2012/12/24 Javascript
JQuery入门——用one()方法绑定事件处理函数(仅触发一次)
2013/02/05 Javascript
ff下JQuery无法监听input的keyup事件的解决方法
2013/12/12 Javascript
浅析jQuery(function(){})与(function(){})(jQuery)之间的区别
2014/01/09 Javascript
jquery的each方法使用示例分享
2014/03/25 Javascript
在javascript中随机数 math random如何生成指定范围数值的随机数
2015/10/21 Javascript
jQuery AJAX timeout 超时问题详解
2016/06/21 Javascript
ES6新特性之变量和字符串用法示例
2017/04/01 Javascript
ionic 自定义弹框效果
2017/06/27 Javascript
分享19个JavaScript 有用的简写写法
2017/07/07 Javascript
BootStrap模态框闪退问题实例代码详解
2018/12/10 Javascript
vue-cli3 配置开发与测试环境详解
2019/05/17 Javascript
解决vue项目F5刷新mounted里的函数不执行问题
2019/11/05 Javascript
[04:07]显微镜下的DOTA2第八期——英雄复活动作
2014/06/24 DOTA
Python语言编写电脑时间自动同步小工具
2013/03/08 Python
Python删除windows垃圾文件的方法
2015/07/14 Python
python 中文件输入输出及os模块对文件系统的操作方法
2018/08/27 Python
python利用Tesseract识别验证码的方法示例
2019/01/21 Python
python opencv实现图像边缘检测
2019/04/29 Python
详解Python 调用C# dll库最简方法
2019/06/20 Python
基于Python数据分析之pandas统计分析
2020/03/03 Python
python实现微信打飞机游戏
2020/03/24 Python
CSS3动画:5种预载动画效果实例
2017/04/05 HTML / CSS
html5实现canvas阴影效果示例
2014/05/07 HTML / CSS
HTML5 在canvas中绘制矩形附效果图
2014/06/23 HTML / CSS
中文师范生自荐信
2014/01/30 职场文书
2014年最新党员对照检查材料汇总
2014/09/15 职场文书
2015年小学教师培训工作总结
2015/07/21 职场文书
高中生综合素质评价范文
2015/08/18 职场文书