自学内容网 自学内容网

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. 测试后再执行:在执行清理脚本前,建议先测试搜索逻辑,确认其只会选中三个月以前的邮件,以免误删除重要邮件。

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


原文地址:https://blog.csdn.net/qq_44133607/article/details/143839406

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!