使用Python3 poplib模块删除服务器上多天前的邮件

使用Python3 poplib模块连接删除服务器上多天前的邮件

背景:

因为工作需要,公司给每个员工都分配了一个邮箱 公司的各种业务都通过邮箱发送。虽然给每个员工的电脑都设置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)
效果

在这里插入图片描述

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

singleShape

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值