使用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 Sleep休眠函数使用简单实例
Feb 02 Python
Python中字符串对齐方法介绍
May 21 Python
Python实现购物系统(示例讲解)
Sep 13 Python
详解django2中关于时间处理策略
Mar 06 Python
Python实现合并excel表格的方法分析
Apr 13 Python
Python实现的爬取豆瓣电影信息功能案例
Sep 15 Python
python函数装饰器之带参数的函数和带参数的装饰器用法示例
Nov 06 Python
python实现提取str字符串/json中多级目录下的某个值
Feb 27 Python
Python基于yaml文件配置logging日志过程解析
Jun 23 Python
Python3 搭建Qt5 环境的方法示例
Jul 16 Python
用OpenCV进行年龄和性别检测的实现示例
Jan 29 Python
详解PyTorch模型保存与加载
Apr 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 mysql_query执行超时(Fatal error: Maximum execution time …)
2013/07/03 PHP
微信公众平台天气预报功能开发
2014/07/06 PHP
php单例模式实现方法分析
2015/03/14 PHP
PHP中判断文件存在使用is_file还是file_exists?
2015/04/03 PHP
js加解密 脚本解密
2008/02/22 Javascript
js+css实现增加表单可用性之提示文字
2013/06/03 Javascript
MultiSelect左右选择控件的设计与实现介绍
2013/06/08 Javascript
js实现弹出窗口、页面变成灰色并不可操作的例子分享
2014/05/10 Javascript
jQuery实现移动 和 渐变特效的点击事件
2015/02/26 Javascript
jquery 表单验证之通过 class验证表单不为空
2015/11/02 Javascript
分享两款带遮罩的jQuery弹出框
2015/12/30 Javascript
jQuery checkbox选中问题之prop与attr注意点分析
2016/11/15 Javascript
javascript数组的定义及操作实例
2019/11/10 Javascript
js根据后缀判断文件文件类型的代码
2020/05/09 Javascript
vue键盘事件点击事件加native操作
2020/07/27 Javascript
JavaScript 常见的继承方式汇总
2020/09/17 Javascript
全网小程序接口请求封装实例代码
2020/11/06 Javascript
Python help()函数用法详解
2014/03/11 Python
详解Python异常处理中的Finally else的功能
2017/12/29 Python
Python反射的用法实例分析
2018/02/11 Python
对Python3.6 IDLE常用快捷键介绍
2018/07/16 Python
Python图像处理之简单画板实现方法示例
2018/08/30 Python
Matplotlib中文乱码的3种解决方案
2018/11/15 Python
matplotlib自定义鼠标光标坐标格式的实现
2021/01/08 Python
详解HTML5 canvas绘图基本使用方法
2018/01/29 HTML / CSS
美国体育用品商店:Rally House(NCAA、NFL、MLB、NBA、NHL和MLS)
2018/01/03 全球购物
Java如何读取CLOB字段
2013/10/10 面试题
考试不及格检讨书
2014/01/09 职场文书
出生公证书样本
2014/04/04 职场文书
委托协议书范本
2014/04/22 职场文书
促销活动计划书
2014/05/02 职场文书
教师工作失职检讨书
2014/09/18 职场文书
校园文化艺术节宣传标语
2014/10/09 职场文书
敬老院义诊活动总结
2015/05/07 职场文书
小学运动会报道稿
2015/07/22 职场文书
安全责任协议书范本
2016/03/23 职场文书