使用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目录操作之python遍历文件夹后将结果存储为xml
Jan 27 Python
Python中特殊函数集锦
Jul 27 Python
在VS Code上搭建Python开发环境的方法
Apr 06 Python
python 将大文件切分为多个小文件的实例
Jan 14 Python
对python判断是否回文数的实例详解
Feb 08 Python
Python实现的调用C语言函数功能简单实例
Mar 13 Python
python地震数据可视化详解
Jun 18 Python
详解Python并发编程之创建多线程的几种方法
Aug 23 Python
python爬虫爬取笔趣网小说网站过程图解
Nov 18 Python
pytorch数据预处理错误的解决
Feb 20 Python
Python中对象的比较操作==和is区别详析
Feb 12 Python
Python进程池与进程锁之语法学习
Apr 11 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文件上传简单实现方法
2015/01/24 PHP
如何用PHP做到页面注册审核
2017/03/02 PHP
PHP使用数组实现矩阵数学运算的方法示例
2017/05/29 PHP
PHP回调函数与匿名函数实例详解
2017/08/16 PHP
php语言注释,单行注释和多行注释
2018/01/21 PHP
PHP PDOStatement::errorInfo讲解
2019/01/31 PHP
javascript 写的一个简单的timer
2009/07/30 Javascript
javascript中局部变量和全局变量的区别详解
2015/02/27 Javascript
Javascript BOM学习小结(六)
2015/11/26 Javascript
Vue2实现组件props双向绑定
2016/12/02 Javascript
JSON中key动态设置及JSON.parse和JSON.stringify()的区别
2016/12/29 Javascript
Angularjs实现搜索关键字高亮显示效果
2017/01/17 Javascript
浅谈js中的变量名和函数名重名
2017/02/13 Javascript
springMVC + easyui + $.ajaxFileUpload实现文件上传注意事项
2017/04/23 Javascript
JS实现的简单折叠展开动画效果示例
2018/04/28 Javascript
JS实现提示效果弹出及延迟隐藏的功能
2019/08/26 Javascript
python抓取豆瓣图片并自动保存示例学习
2014/01/10 Python
Python使用matplotlib实现在坐标系中画一个矩形的方法
2015/05/20 Python
python处理大数字的方法
2015/05/27 Python
Django 生成登陆验证码代码分享
2017/12/12 Python
用Python实现大文本文件切割的方法
2019/01/12 Python
python实现统计文本中单词出现的频率详解
2019/05/20 Python
pyenv虚拟环境管理python多版本和软件库的方法
2019/12/26 Python
Django 实现将图片转为Base64,然后使用json传输
2020/03/27 Python
通过python调用adb命令对App进行性能测试方式
2020/04/23 Python
Jupyter notebook快速入门教程(推荐)
2020/05/18 Python
Python新手学习函数默认参数设置
2020/06/03 Python
Python爬虫scrapy框架Cookie池(微博Cookie池)的使用
2021/01/13 Python
德国baby-markt婴儿用品瑞士网站:baby-markt.ch
2017/06/09 全球购物
马来西亚银饰品牌:JEOEL
2017/12/15 全球购物
教育孩子心得体会
2014/01/01 职场文书
人力资源部副职的竞聘演讲稿
2014/01/07 职场文书
商场总经理岗位职责
2014/02/03 职场文书
员工安全责任协议书
2016/03/22 职场文书
Nginx 路由转发和反向代理location配置实现
2021/11/11 Servers
Nginx的gzip相关介绍
2022/05/11 Servers