使用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实现导出数据生成excel报表的方法示例
Jul 12 Python
解决django前后端分离csrf验证的问题
Feb 03 Python
python3+PyQt5 实现Rich文本的行编辑方法
Jun 17 Python
解决pyecharts在jupyter notebook中使用报错问题
Apr 23 Python
Python获取一个用户名的组ID过程解析
Sep 03 Python
pytorch 常用线性函数详解
Jan 15 Python
python numpy生成等差数列、等比数列的实例
Feb 25 Python
python代码实现TSNE降维数据可视化教程
Feb 28 Python
python des,aes,rsa加解密的实现
Jan 16 Python
python中的被动信息搜集
Apr 29 Python
如何在Python中妥善使用进度条详解
Apr 05 Python
pytorch分类模型绘制混淆矩阵以及可视化详解
Apr 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
Terran剧情介绍
2020/03/14 星际争霸
php+mysql开源XNA 聚合程序发布 下载
2007/07/13 PHP
让的PHP代码飞起来的40条小技巧(提升php效率)
2010/04/12 PHP
nginx下安装php7+php5
2016/07/31 PHP
JavaScript 无符号右移赋值操作
2009/04/17 Javascript
Javascript学习笔记6 prototype的提出
2010/01/11 Javascript
JavaScript之Getters和Setters 平台支持等详细介绍
2012/12/07 Javascript
ajax页面无刷新 IE下遭遇Ajax缓存导致数据不更新的问题
2012/12/11 Javascript
深入解析contentWindow, contentDocument
2013/07/04 Javascript
jquery中map函数与each函数的区别实例介绍
2014/06/23 Javascript
javascript消除window.close()的提示窗口
2015/05/20 Javascript
js实现三张图(文)片一起切换的banner焦点图
2015/08/25 Javascript
浅谈js中同名函数和同名变量的执行问题
2017/02/12 Javascript
vue.js开发实现全局调用的MessageBox组件实例代码
2017/11/22 Javascript
详解webpack提取第三方库的正确姿势
2017/12/22 Javascript
vue图片上传本地预览组件使用详解
2019/02/20 Javascript
150行代码带你实现微信小程序中的数据侦听
2019/05/17 Javascript
js实现百度登录窗口拖拽效果
2020/03/19 Javascript
js在HTML的三种引用方式详解
2020/08/29 Javascript
js实现随机点名
2021/01/19 Javascript
Python3.6.0+opencv3.3.0人脸检测示例
2018/05/25 Python
解决Tensorflow安装成功,但在导入时报错的问题
2018/06/13 Python
python实现微信防撤回神器
2019/04/29 Python
Python使用lambda表达式对字典排序操作示例
2019/07/25 Python
Flask框架学习笔记之路由和反向路由详解【图文与实例】
2019/08/12 Python
Python 读取xml数据,cv2裁剪图片实例
2020/03/10 Python
HTML 5.1来了 9月份正式发布 更新内容预览
2016/04/26 HTML / CSS
元旦晚会主持词
2014/03/24 职场文书
英语教师自荐信
2014/05/26 职场文书
2015年办公室文秘工作总结
2015/04/30 职场文书
技能培训通讯稿
2015/07/18 职场文书
学术会议开幕词
2016/03/03 职场文书
导游词之江南园林狮子林
2019/09/16 职场文书
iPhone13将有八大升级
2021/04/15 数码科技
比较node.js和Deno
2021/04/27 Javascript
python 算法题——快乐数的多种解法
2021/05/27 Python