使用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使用回溯法子集树模板解决爬楼梯问题示例
Sep 08 Python
Python调用C语言的方法【基于ctypes模块】
Jan 22 Python
Python unittest模块用法实例分析
May 25 Python
django1.11.1 models 数据库同步方法
May 30 Python
Python中关于浮点数的冷知识
Sep 22 Python
python 实现Flask中返回图片流给前端展示
Jan 09 Python
基于tensorflow for循环 while循环案例
Jun 30 Python
python request 模块详细介绍
Nov 10 Python
Python截图并保存的具体实例
Jan 14 Python
详解pycharm的python包opencv(cv2)无代码提示问题的解决
Jan 29 Python
Jupyter notebook 不自动弹出网页的解决方案
May 21 Python
总结Python变量的相关知识
Jun 28 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 autoload机制的详解
2013/06/09 PHP
web server使用php生成web页面的三种方法总结
2013/10/28 PHP
PHP7.0版本备注
2015/07/23 PHP
PHP简单实现生成txt文件到指定目录的方法
2016/04/25 PHP
Yii2框架数据验证操作实例详解
2018/05/02 PHP
dreamweaver 8实现Jquery自动提示
2014/12/04 Javascript
js实现仿qq消息的弹出窗效果
2016/01/06 Javascript
javascript DIV实现跟随鼠标移动
2020/03/19 Javascript
学习vue.js中class与style绑定
2016/12/03 Javascript
几种tab切换详解
2017/02/03 Javascript
js+html制作简单日历的方法
2017/06/27 Javascript
Vue的事件响应式进度条组件实例详解
2018/02/04 Javascript
CKeditor富文本编辑器使用技巧之添加自定义插件的方法
2019/06/14 Javascript
微信小程序自定义弹出模态框禁止底部滚动功能
2020/03/09 Javascript
linux系统使用python监测系统负载脚本分享
2014/01/15 Python
Python科学计算环境推荐——Anaconda
2014/06/30 Python
Djang中静态文件配置方法
2015/07/30 Python
python回调函数中使用多线程的方法
2017/12/25 Python
pygame游戏之旅 调用按钮实现游戏开始功能
2018/11/21 Python
使用python实现语音文件的特征提取方法
2019/01/09 Python
Python3.8中使用f-strings调试
2019/05/22 Python
python递归调用中的坑:打印有值, 返回却None
2020/03/16 Python
基于Python第三方插件实现西游记章节标注汉语拼音的方法
2020/05/22 Python
python如何更新包
2020/06/11 Python
用Python 爬取猫眼电影数据分析《无名之辈》
2020/07/24 Python
Python基于opencv的简单图像轮廓形状识别(全网最简单最少代码)
2021/01/28 Python
英国舒适型鞋履品牌:FitFlop
2017/05/17 全球购物
Lookfantastic美国/加拿大:英国知名美妆购物网站
2019/03/27 全球购物
英国设计师泳装、沙滩装和比基尼在线精品店:Beach Cafe
2019/08/28 全球购物
LN-CC英国:伦敦时尚生活的缩影
2019/09/01 全球购物
高分子材料与工程专业推荐信
2013/12/01 职场文书
黄河的主人教学反思
2014/02/07 职场文书
社区清明节活动总结
2014/07/04 职场文书
2014入党积极分子破除“四风”思想汇报
2014/09/14 职场文书
公务员考察材料范文
2014/12/23 职场文书
SQL注入的实现以及防范示例详解
2021/06/02 MySQL