使用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 相关文章推荐
简单介绍Ruby中的CGI编程
Apr 10 Python
python中urllib.unquote乱码的原因与解决方法
Apr 24 Python
Python中import机制详解
Nov 14 Python
python调用系统ffmpeg实现视频截图、http发送
Mar 06 Python
opencv实现图片模糊和锐化操作
Nov 19 Python
pygame游戏之旅 添加游戏暂停功能
Nov 21 Python
Python的条件表达式和lambda表达式实例
Jan 31 Python
利用django+wechat-python-sdk 创建微信服务器接入的方法
Feb 20 Python
如何安装并使用conda指令管理python环境
Jul 10 Python
python通过文本在一个图中画多条线的实例
Feb 21 Python
QML用PathView实现轮播图
Jun 03 Python
Python 为什么推荐蛇形命名法原因浅析
Jun 18 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
Oracle Faq(Oracle的版本)
2006/10/09 PHP
PHP面向对象三大特点学习(充分理解抽象、封装、继承、多态)
2012/05/07 PHP
基于MySQL分区性能的详细介绍
2013/05/02 PHP
php similar_text()函数的定义和用法
2016/05/12 PHP
php使用ftp实现文件上传与下载功能
2017/07/21 PHP
用js实现的仿sohu博客更换页面风格(简单版)
2007/03/22 Javascript
根据表格中的某一列进行排序的javascript代码
2013/11/29 Javascript
js中confirm实现执行操作前弹出确认框的方法
2014/11/01 Javascript
JavaScript检测原始值、引用值、属性
2016/06/20 Javascript
Bootstrap表单布局
2016/07/19 Javascript
第一次接触Bootstrap框架
2016/10/24 Javascript
jQuery插件fullPage.js实现全屏滚动效果
2016/12/02 Javascript
Angularjs2不同组件间的通信实例代码
2017/05/06 Javascript
vue如何引入sass全局变量
2018/06/28 Javascript
图文详解vue框架安装步骤
2019/02/12 Javascript
解决layui调用自定义方法提示未定义的问题
2019/09/14 Javascript
javascript中的with语句学习笔记及用法
2020/02/17 Javascript
Vue实现省市区三级联动
2020/12/27 Vue.js
[50:27]Secret vs VG 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/20 DOTA
Python中实现参数类型检查的简单方法
2015/04/21 Python
100行Python代码实现自动抢火车票(附源码)
2018/01/11 Python
对pandas replace函数的使用方法小结
2018/05/18 Python
Vue的el-scrollbar实现自定义滚动
2018/05/29 Python
python lambda表达式在sort函数中的使用详解
2019/08/28 Python
Python性能分析工具Profile使用实例
2019/11/19 Python
python实现将range()函数生成的数字存储在一个列表中
2020/04/02 Python
使用python实现时间序列白噪声检验方式
2020/06/03 Python
html5 Canvas画图教程(11)—使用lineTo/arc/bezierCurveTo画椭圆形
2013/01/09 HTML / CSS
下面代码从性能上考虑,有什么问题
2015/04/03 面试题
销售工作人员的自我评价分享
2013/11/10 职场文书
生物技术专业毕业生求职信范文
2013/12/14 职场文书
社会保险接收函
2014/01/12 职场文书
合伙经营协议书范本(通用版)
2014/12/03 职场文书
自我检讨书怎么写
2015/05/07 职场文书
vue组件vue-esign实现电子签名
2022/04/21 Vue.js
使用vuex-persistedstate本地存储vuex
2022/04/29 Vue.js