使用Python3 poplib模块删除服务器多天前的邮件实现代码

作者:singleShape 时间:2023-05-08 08:21:54 

背景:

因为工作需要,公司给每个员工都分配了一个邮箱 公司的各种业务都通过邮箱发送。虽然给每个员工的电脑都设置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模块删除服务器多天前的邮件实现代码

来源:https://blog.csdn.net/qq_25094817/article/details/105700806

标签:Python,poplib,模块,删除邮件
0
投稿

猜你喜欢

  • 在MySQL中使用通配符时应该注意的问题

    2024-01-26 13:17:07
  • python3定位并识别图片验证码实现自动登录功能

    2022-07-23 13:23:59
  • Pycharm连接远程服务器并远程调试的全过程

    2023-12-26 23:36:03
  • Pandas实现DataFrame的简单运算、统计与排序

    2022-03-29 02:09:54
  • 分享8个非常流行的 Python 可视化工具包

    2022-11-14 08:40:14
  • 简析SQL Server数据库用视图来处理复杂的数据查询关系

    2024-01-14 00:35:50
  • CentOS中升级Python版本的方法详解

    2021-08-22 20:22:30
  • vue单页应用中如何使用jquery的方法示例

    2024-05-09 10:40:14
  • Python去除字符串两端空格的方法

    2023-06-14 23:15:40
  • python判断正负数方式

    2023-07-06 11:16:12
  • 解决pycharm回车之后不能换行或不能缩进的问题

    2023-06-11 10:45:40
  • MySQL数据库中使用GRANT语句增添新用户

    2008-12-17 14:45:00
  • PHP PDOStatement::fetch讲解

    2023-06-04 20:06:02
  • python 列表推导和生成器表达式的使用

    2021-03-16 11:21:39
  • python读取浮点数和读取文本文件示例

    2022-10-31 16:03:38
  • Python调用shell命令常用方法(4种)

    2021-05-06 08:22:06
  • 解析SQL Server与ASP互操作的时间处理

    2009-02-01 16:40:00
  • 利用Golang解析json数据的方法示例

    2024-04-27 15:36:04
  • PyCharm Anaconda配置PyQt5开发环境及创建项目的教程详解

    2022-03-12 07:15:47
  • jRaiser与jQuery的冲突问题

    2010-07-27 12:36:00
  • asp之家 网络编程 m.aspxhome.com