使用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数据结构树和二叉树简介
Apr 29 Python
python中实现精确的浮点数运算详解
Nov 02 Python
PyQt5每天必学之单行文本框
Apr 19 Python
对YOLOv3模型调用时候的python接口详解
Aug 26 Python
python 实现多维数组转向量
Nov 30 Python
解决Python图形界面中设置尺寸的问题
Mar 05 Python
pandas数据拼接的实现示例
Apr 16 Python
Python设计密码强度校验程序
Jul 30 Python
python爬虫beautifulsoup解析html方法
Dec 07 Python
python 下划线的多种应用场景总结
May 12 Python
浅谈Python numpy创建空数组的问题
May 25 Python
深入理解pytorch库的dockerfile
Jun 10 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
Apache, PHP在Windows 9x/NT下的安装与配置 (二)
2006/10/09 PHP
在PHP中养成7个面向对象的好习惯
2010/07/17 PHP
2014过年倒计时示例
2014/01/31 PHP
php源码之将图片转化为data/base64数据流实例详解
2016/11/27 PHP
PHP连续签到功能实现方法详解
2019/12/04 PHP
有效的捕获JavaScript焦点的方法小结
2009/10/08 Javascript
JavaScript页面刷新与弹出窗口问题的解决方法
2010/03/02 Javascript
Dojo 学习要点
2010/09/03 Javascript
js判断屏幕分辨率的代码
2013/07/16 Javascript
js实现当复选框选择匿名登录时隐藏登录框效果
2015/08/14 Javascript
jQuery实现带动画效果的多级下拉菜单代码
2015/09/08 Javascript
NodeJS远程代码执行
2016/08/28 NodeJs
详解Angular中的自定义服务Service、Provider以及Factory
2017/04/22 Javascript
jQuery模拟爆炸倒计时功能实例代码
2017/08/21 jQuery
推荐VSCode 上特别好用的 Vue 插件之vetur
2017/09/14 Javascript
React Native验证码倒计时工具类分享
2017/10/24 Javascript
vue使用axios时关于this的指向问题详解
2017/12/22 Javascript
[01:56]《DOTA2》中文配音CG
2013/04/22 DOTA
[01:10:27]DOTA2-DPC中国联赛正赛 SAG vs XG BO3 第二场 3月5日
2021/03/11 DOTA
利用Python代码实现数据可视化的5种方法详解
2018/03/25 Python
Python3多线程操作简单示例
2018/05/22 Python
python学习笔记--将python源文件打包成exe文件(pyinstaller)
2018/05/26 Python
解决python super()调用多重继承函数的问题
2019/06/26 Python
浅析Python 引号、注释、字符串
2019/07/25 Python
python文字转语音实现过程解析
2019/11/12 Python
解决keras加入lambda层时shape的问题
2020/06/11 Python
PyCharm2020最新激活码+激活码补丁(亲测最新版PyCharm2020.2激活成功)
2020/11/25 Python
英国游戏机和游戏购物网站:365games.co.uk
2018/06/18 全球购物
宣传策划类求职信范文
2014/01/31 职场文书
优秀班集体获奖感言
2014/02/03 职场文书
《会变的花树叶》教学反思
2014/02/10 职场文书
研究生考核个人自我鉴定
2014/03/27 职场文书
学习雷锋月活动总结
2014/07/03 职场文书
看雷锋电影观后感
2015/06/10 职场文书
JS不要再到处使用绝对等于运算符了
2021/04/30 Javascript
canvas 中如何实现物体的框选
2022/08/05 Javascript