当前位置: 首页 > article >正文

python编写一个自动清理三个月以前的邮件脚本

以下是一个使用 Python 编写的自动清理三个月以前的邮件的脚本。这个脚本适用于连接支持 IMAP 协议的邮箱服务,例如 Gmail。请注意,在执行此操作时,您需要提供电子邮件账号和应用程序专用密码(建议不要使用普通密码,并且小心保护密码)。

此脚本会登录到邮箱并自动删除三个月以前的邮件。你需要开启邮箱的 IMAP 访问,并确保 IMAP 权限已授予你的账号。

import imaplib
import email
from email.header import decode_header
import datetime

# 邮箱登录信息
EMAIL = "your_email@gmail.com"
PASSWORD = "your_app_password"
IMAP_SERVER = "imap.gmail.com"

# 连接到 IMAP 服务器
def connect_to_mailbox(email, password, imap_server):
    try:
        mail = imaplib.IMAP4_SSL(imap_server)
        mail.login(email, password)
        return mail
    except Exception as e:
        print(f"登录失败: {e}")
        return None

# 获取三个月前的日期
def get_three_months_ago_date():
    three_months_ago = datetime.datetime.now() - datetime.timedelta(days=90)
    return three_months_ago.strftime("%d-%b-%Y")

# 清理三个月以前的邮件
def clean_old_emails(mail):
    mail.select("inbox")
    date_cutoff = get_three_months_ago_date()
    search_query = f'(BEFORE {date_cutoff})'
    result, data = mail.search(None, search_query)

    if result == "OK":
        email_ids = data[0].split()
        if not email_ids:
            print("没有找到三个月以前的邮件。")
            return
        
        print(f"找到 {len(email_ids)} 封邮件,将进行删除。")
        for e_id in email_ids:
            mail.store(e_id, '+FLAGS', '\\Deleted')
        mail.expunge()
        print("清理完成。")
    else:
        print("邮件搜索失败。")

# 主函数
def main():
    mail = connect_to_mailbox(EMAIL, PASSWORD, IMAP_SERVER)
    if mail:
        clean_old_emails(mail)
        mail.logout()

if __name__ == "__main__":
    main()

注意事项:

  1. 密码安全:脚本中涉及邮箱账号密码,建议使用应用专用密码而不是普通密码,并避免在代码中直接明文保存密码。
  2. IMAP 访问:确保你的邮箱 IMAP 已启用,且使用的是授权的邮箱服务商支持的配置。
  3. 测试后再执行:在执行清理脚本前,建议先测试搜索逻辑,确认其只会选中三个月以前的邮件,以免误删除重要邮件。

是否有需要进一步优化的功能,例如按特定条件筛选邮件或选择性地移动而非删除邮件?


http://www.kler.cn/a/398596.html

相关文章:

  • Flink_DataStreamAPI_执行环境
  • IC 脚本之VIM 记录
  • 跟我学C++中级篇——RAII
  • 微服务瞎写
  • 【JAVA】使用IDEA创建maven聚合项目
  • 基于麒麟服务器操作系统V10版本,部署Nginx服务、MySql服务搭建PHP环境,实现静态网站平台的搭建。
  • 攻防世界-mfw
  • antd table表格设置最小宽度,列宽等比例显示
  • 26-ES集群搭建、身份认证配置
  • 【leetcode】704. 二分查找
  • 力扣 多数元素-169
  • 基于python Django的boss直聘数据采集与分析预测系统,爬虫可以在线采集,实时动态显示爬取数据,预测基于技能匹配的预测模型
  • css三角制作(二十课)
  • 【html网页页面002】html+css制作实现家乡江苏网页主题制作(5页面附效果图)
  • 2024-11-17 -MATLAB三维绘图简单实例
  • 发布 npm 包推送到官方库时 提示 connect ETIMEDOUT
  • 24首届数证杯(流量分析部分)
  • EM算法与高斯混合聚类:理解与实践
  • QT使用libssh2库通过密匙实现sftp协议上传文件
  • 【UE5】在材质Custom写函数的方法
  • UniAPP快速入门教程(一)
  • 目标检测评估指标详解
  • Nature Communications 基于触觉手套的深度学习驱动视触觉动态重建方案
  • 算法日记 26-27day 贪心算法
  • 基于STM32F103的秒表设计-液晶显示
  • 什么是JSX?