Python3使用poplib模块清理服务器过期邮件的完整实现

Jasper
Jasper
发布时间:2026-10-13| 2人浏览过
原创

本文介绍如何利用Python3的poplib模块连接POP3服务器,通过解析邮件原始数据获取日期,并自动删除指定天数前的邮件。文中详细展示了结合email.parser和dateutil.parser处理日期转换的逻辑,提供了完整的Python代码示例及运行效果,帮助解决服务器邮件存储占用过大的问题。

邮件清理背景与需求

背景:

出于工作需求,公司为每位员工分配了专属邮箱,且各类业务通知均通过该邮箱发送。尽管已为所有员工电脑配置了POP3登录权限,但由于客户端程序默认保留服务器副本,导致服务器上累积了大量邮件,严重占用了存储空间。

删除服务器上多天前的邮件

技术实现方案

实现方案:

  • 利用Python的poplib模块执行邮件的查看与删除操作。
  • 借助email.parser模块对邮件原始内容进行结构化解析。
  • 采用dateutil.parser模块进行邮件日期字符串的标准化转换。

代码实现:

Python代码实现与解析


# -*- 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模块相关操作,请查阅本站历史文章或继续浏览后续内容。感谢大家的支持!

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。