使用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转换摩斯密码示例
Feb 16 Python
Python random模块(获取随机数)常用方法和使用例子
May 13 Python
Python for Informatics 第11章 正则表达式(一)
Apr 21 Python
python实现简易云音乐播放器
Jan 04 Python
Python常见数据结构之栈与队列用法示例
Jan 14 Python
基于django ManyToMany 使用的注意事项详解
Aug 09 Python
学Python 3的理由和必要性
Nov 19 Python
Django对接支付宝实现支付宝充值金币功能示例
Dec 17 Python
Django实现celery定时任务过程解析
Apr 21 Python
Python过滤掉numpy.array中非nan数据实例
Jun 08 Python
Python监听剪切板实现方法代码实例
Nov 11 Python
Python3 类型标注支持操作
Jun 02 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
SMARTY学习手记
2007/01/04 PHP
php对象在内存中的存在形式分析
2015/02/03 PHP
php集成套件服务器xampp安装使用教程(适合第一次玩PHP的新手)
2015/06/03 PHP
yii2 在控制器中验证请求参数的使用方法
2019/06/19 PHP
thinkphp5框架调用其它控制器方法 实现自定义跳转界面功能示例
2019/07/03 PHP
prototype 中文参数乱码解决方案
2009/11/09 Javascript
HTML node相关的一些资料整理
2010/01/01 Javascript
javascript offsetX与layerX区别
2010/03/12 Javascript
ExtJS Ext.MessageBox.alert()弹出对话框详解
2010/04/02 Javascript
jQuery.clean使用方法及思路分析
2013/01/07 Javascript
jquery中focus()函数实现当对象获得焦点后自动把光标移到内容最后
2013/09/29 Javascript
JavaScript制作颜色反转小游戏
2016/09/25 Javascript
微信小程序 navigation API实例详解
2016/10/02 Javascript
Ajax的概述与实现过程
2016/11/18 Javascript
解决Node.js使用MySQL出现connect ECONNREFUSED 127.0.0.1:3306的问题
2017/03/09 Javascript
Javascript读取上传文件内容/类型/字节数
2019/04/30 Javascript
微信小程序开发注意指南和优化实践(小结)
2019/06/21 Javascript
独立部署小程序基于nodejs的服务器过程详解
2019/06/24 NodeJs
vue实现多组关键词对应高亮显示功能
2019/07/25 Javascript
[01:11:08]Winstrike vs NB 2018国际邀请赛淘汰赛BO1 8.21
2018/08/22 DOTA
Python中关于字符串对象的一些基础知识
2015/04/08 Python
python实现Floyd算法
2018/01/03 Python
使用Python从零开始撸一个区块链
2018/03/14 Python
Python爬虫PyQuery库基本用法入门教程
2018/08/04 Python
Django使用uwsgi部署时的配置以及django日志文件的处理方法
2019/08/30 Python
Django框架创建项目的方法入门教程
2019/11/04 Python
selenium+超级鹰实现模拟登录12306
2021/01/24 Python
HTML5 Canvas+JS控制电脑或手机上的摄像头实例
2014/05/03 HTML / CSS
探索欧洲最好的品牌:Bombinate
2019/06/14 全球购物
食品安全汇报材料
2014/08/18 职场文书
党员干部反四风民主生活会对照检查材料思想汇报
2014/10/12 职场文书
死亡证明书样本说明
2014/10/18 职场文书
二婚主持词
2015/06/30 职场文书
Python生成九宫格图片的示例代码
2021/04/14 Python
为什么RedisCluster设计成16384个槽
2021/09/25 Redis
在Oracle表中进行关键词搜索的过程
2022/06/10 Oracle