使用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语言的面相对象编程方式初步学习
Mar 12 Python
Python实现将Excel转换为json的方法示例
Aug 05 Python
Tensorflow的可视化工具Tensorboard的初步使用详解
Feb 11 Python
Python subprocess库的使用详解
Oct 26 Python
Python基于Opencv来快速实现人脸识别过程详解(完整版)
Jul 11 Python
Python Selenium 之数据驱动测试的实现
Aug 01 Python
python脚本实现音频m4a格式转成MP3格式的实例代码
Oct 09 Python
关于Python 常用获取元素 Driver 总结
Nov 24 Python
Python lxml模块的基本使用方法分析
Dec 21 Python
Python偏函数Partial function使用方法实例详解
Jun 17 Python
用python制作个音乐下载器
Jan 30 Python
Pygame Event事件模块的详细示例
Nov 17 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 array_flip() 删除重复数组元素专用函数
2010/05/16 PHP
PHP执行shell脚本运行程序不产生core文件的方法
2016/12/28 PHP
一个JS函数搞定网页标题(title)闪动效果
2014/05/13 Javascript
js实现点击图片将图片地址复制到粘贴板的方法
2015/02/16 Javascript
jQuery实现的checkbox级联选择下拉菜单效果示例
2016/12/26 Javascript
自定义vue全局组件use使用、vuex的使用详解
2017/06/14 Javascript
React如何将组件渲染到指定DOM节点详解
2017/09/08 Javascript
angular2/ionic2 实现搜索结果中的搜索关键字高亮的示例
2018/08/17 Javascript
详解vue组件中使用路由方法
2019/02/12 Javascript
Vue传参一箩筐(页面、组件)
2019/04/04 Javascript
原生JS实现随机点名项目的实例代码
2019/04/30 Javascript
在Vue中用canvas实现二维码和图片合成海报的方法
2019/06/10 Javascript
JS实现求字符串中出现最多次数的字符和次数示例
2019/07/05 Javascript
原生JS 实现的input输入时表格过滤操作示例
2019/08/03 Javascript
微信小程序bindtap事件与冒泡阻止详解
2019/08/08 Javascript
帮你彻底搞懂JS中的prototype、__proto__与constructor(图解)
2019/08/23 Javascript
vue 中 elment-ui table合并上下两行相同数据单元格
2019/12/26 Javascript
Angular之jwt令牌身份验证的实现
2020/02/14 Javascript
Vue单文件组件开发实现过程详解
2020/07/30 Javascript
python中精确输出JSON浮点数的方法
2014/04/18 Python
Python中最常用的操作列表的几种方法归纳
2015/04/24 Python
Java Web开发过程中登陆模块的验证码的实现方式总结
2016/05/25 Python
轻松掌握python设计模式之策略模式
2016/11/18 Python
浅谈利用numpy对矩阵进行归一化处理的方法
2018/07/11 Python
双向RNN:bidirectional_dynamic_rnn()函数的使用详解
2020/01/20 Python
使用opencv中匹配点对的坐标提取方式
2020/06/04 Python
Python3爬虫关于代理池的维护详解
2020/07/30 Python
Joe Fresh官网:加拿大时尚品牌和零售连锁店
2016/11/30 全球购物
体育教育专业毕业生自荐信
2013/11/15 职场文书
计算机专业推荐信范文
2013/11/27 职场文书
户外活动策划方案
2014/03/12 职场文书
2014年教师节演讲稿范文
2014/09/10 职场文书
工作证明英文模板
2014/10/21 职场文书
2015年扶贫帮困工作总结
2015/05/20 职场文书
苦儿流浪记读书笔记
2015/07/01 职场文书
golang中切片copy复制和等号复制的区别介绍
2021/04/27 Golang