使用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 相关文章推荐
使用go和python递归删除.ds store文件的方法
Jan 22 Python
深入理解Python中各种方法的运作原理
Jun 15 Python
使用Python编写简单的端口扫描器的实例分享
Dec 18 Python
python探索之BaseHTTPServer-实现Web服务器介绍
Oct 28 Python
Python 12306抢火车票脚本
Feb 07 Python
python使用Plotly绘图工具绘制气泡图
Apr 01 Python
Python正则表达式匹配和提取IP地址
Jun 06 Python
简单了解django索引的相关知识
Jul 17 Python
pytorch自定义二值化网络层方式
Jan 07 Python
将tensorflow模型打包成PB文件及PB文件读取方式
Jan 23 Python
彻底搞懂 python 中文乱码问题(深入分析)
Feb 28 Python
python使用shell脚本创建kafka连接器
Apr 29 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文件的自动运行方法分析
2016/05/13 PHP
Javascript 更新 JavaScript 数组的 uniq 方法
2008/01/23 Javascript
js单例模式的两种方案
2013/10/22 Javascript
jQuery jcrop插件截图使用方法
2013/11/20 Javascript
JavaScript判断浏览器类型的方法
2015/02/10 Javascript
JS通过ajax动态读取xml文件内容的方法
2015/03/24 Javascript
7个有用的jQuery代码片段分享
2015/05/19 Javascript
jQuery打字效果实现方法(附demo源码下载)
2015/12/18 Javascript
分享两段简单的JS代码防止SQL注入
2016/04/12 Javascript
微信小程序 Image API实例详解
2016/09/30 Javascript
Javascript之面向对象--封装
2016/12/02 Javascript
如何在Angular2中使用jQuery及其插件的方法
2017/02/09 Javascript
Bootstrap table 定制提示语的加载过程
2017/02/20 Javascript
javascript中的面向对象
2017/03/30 Javascript
在vue项目中使用element-ui的Upload上传组件的示例
2018/02/08 Javascript
angularJs中ng-model-options设置数据同步的方法
2018/09/30 Javascript
vue实现点击隐藏与显示实例分享
2019/02/13 Javascript
基于vue实现滚动条滚动到指定位置对应位置数字进行tween特效
2019/04/18 Javascript
解决layer弹出层msg的文字不显示的问题
2019/09/11 Javascript
Js利用正则表达式去除字符串的中括号
2020/11/23 Javascript
[02:24]DOTA2亚洲邀请赛 NAVI战队出场宣传片
2015/02/07 DOTA
python定时器使用示例分享
2014/02/16 Python
Python实现微信公众平台自定义菜单实例
2015/03/20 Python
python面向对象 反射原理解析
2019/08/12 Python
Python 实现毫秒级淘宝抢购脚本的示例代码
2019/09/16 Python
python识别验证码的思路及解决方案
2020/09/13 Python
python 中关于pycharm选择运行环境的问题
2020/10/31 Python
常用的四种CSS透明属性介绍
2014/04/12 HTML / CSS
深圳-东方伟业笔试部分
2015/02/11 面试题
汽车促销活动方案
2014/03/31 职场文书
感恩的演讲稿
2014/05/06 职场文书
汽车维修求职信
2014/06/15 职场文书
护士工作心得体会
2016/01/25 职场文书
会议主持词通用版
2019/04/02 职场文书
SpringBoot整合minio快速入门教程(代码示例)
2022/04/03 Java/Android
Hive HQL支持2种查询语句风格
2022/06/25 数据库