使用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友情链接检查方法
Jul 08 Python
浅谈Python中列表生成式和生成器的区别
Aug 03 Python
python下载微信公众号相关文章
Feb 26 Python
Python基本数据结构之字典类型dict用法分析
Jun 08 Python
在Django下创建项目以及设置settings.py教程
Dec 03 Python
python pip安装包出现:Failed building wheel for xxx错误的解决
Dec 25 Python
Pycharm debug调试时带参数过程解析
Feb 03 Python
Jupyter notebook 远程配置及SSL加密教程
Apr 14 Python
浅谈Python中的生成器和迭代器
Jun 19 Python
Python学习之time模块的基本使用
Jan 17 Python
深入理解Python变量的数据类型和存储
Feb 01 Python
Python自动化测试基础必备知识点总结
Feb 07 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原理之异常机制深入分析
2010/08/08 PHP
php session安全问题分析
2011/06/24 PHP
PHP采集静态页面并把页面css,img,js保存的方法
2014/12/23 PHP
C# WinForm中实现快捷键自定义设置实例
2015/01/23 PHP
PHP使用MPDF类生成PDF的方法
2015/12/08 PHP
PHP常用的三种设计模式
2017/02/17 PHP
javascript下阻止表单重复提交、防刷新、防后退
2007/08/17 Javascript
asp批量修改记录的代码
2008/06/25 Javascript
JS调用CS里的带参方法实例
2013/08/01 Javascript
目前流行的JavaScript库的介绍及对比
2013/09/29 Javascript
jquery delay()介绍及使用指南
2014/09/02 Javascript
jquery实现多行文字图片滚动效果示例代码
2014/10/10 Javascript
js+HTML5实现canvas多种颜色渐变效果的方法
2015/06/05 Javascript
以JavaScript来实现WordPress中的二级导航菜单的方法
2015/12/14 Javascript
利用js编写响应式侧边栏
2016/09/17 Javascript
JS模拟实现ECMAScript5新增的数组方法
2017/03/20 Javascript
微信小程序开发中的疑问解答汇总
2017/07/03 Javascript
python中去空格函数的用法
2014/08/21 Python
Python3实现发送QQ邮件功能(html)
2017/12/15 Python
Django组件之cookie与session的使用方法
2019/01/10 Python
Python实现截取PDF文件中的几页代码实例
2019/03/11 Python
使用Python正则表达式操作文本数据的方法
2019/05/14 Python
python对象转字典的两种实现方式示例
2019/11/07 Python
Python使用urllib模块对URL网址中的中文编码与解码实例详解
2020/02/18 Python
新手入门学习python Numpy基础操作
2020/03/02 Python
Spring @Enable模块驱动原理及使用实例
2020/06/23 Python
CSS3制作精致的照片墙特效
2016/06/07 HTML / CSS
详解使用canvas保存网页为pdf文件支持跨域
2018/11/23 HTML / CSS
就业表自我评价分享
2014/02/06 职场文书
高一新生军训方案
2014/05/12 职场文书
庆元旦演讲稿
2014/09/15 职场文书
2014年维稳工作总结
2014/11/18 职场文书
不服劳动仲裁起诉书
2015/05/20 职场文书
结婚典礼致辞
2015/07/28 职场文书
nginx配置ssl实现https的方法示例
2021/03/31 Servers
Python使用sql语句对mysql数据库多条件模糊查询的思路详解
2021/04/12 Python