时间:2020-07-16 python教程 查看: 961
背景:
因为工作需要,公司给每个员工都分配了一个邮箱 公司的各种业务都通过邮箱发送。虽然给每个员工的电脑都设置pop3登录但是他们的程序设定有保存服务器副本,所以大量邮件使得服务器存储占用巨大。
删除服务器上多天前的邮件
实现:
代码
# -*- 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博客以前的文章或继续浏览下面的相关文章希望大家以后多多支持python博客!