阿里邮箱IMAP场景示例:彻底删除指定文件夹内的邮件

更新时间: 2024-11-11

重要

风险提示:下述代码在Python 3.11.9进行的测试,用于生产环境之前请务必先做好测试。

Python示例代码

场景1:彻底删除指定文件夹的所有邮件。

 

# -*- coding: utf-8 -*-import imaplib# 设置邮箱信息# 配置 IMAP 服务器imap_server = 'imap.qiye.aliyun.com'  # IMAP 服务器地址username = 'test@example.com'  # 用户名password = '********'  # 密码port = 993  # 端口号source_folder = 'folder2'# 连接到IMAP服务器mail = imaplib.IMAP4_SSL(imap_server, port)
mail.login(username, password)# 选择源文件夹mail.select(source_folder)# 搜索邮箱中所有邮件的UID,推荐result, uid_data = mail.uid('search', None, 'ALL')print('搜索结果:', result, uid_data)# 如果找到邮件if result == 'OK':    for uid in uid_data[0].split():
        result, data = mail.uid('STORE', uid, '+FLAGS', '(\\Deleted)')        if result == 'OK':            print(f'{uid} 删除完成')# 注销mail.close()
mail.logout()

运行结果

image

image


场景2:彻底删除指定uid的邮件

 

# -*- coding: utf-8 -*-import imaplibdef before_after_move_email(source_folder, destination_folder):    # 选择文件夹
    mail.select(source_folder)    # uid
    result, data = mail.uid('search', None, 'UNSEEN')    print(f'{source_folder}搜索结果UID:{result},{data}')    # 选择文件夹
    mail.select(destination_folder)    # uid
    result, data = mail.uid('search', None, 'UNSEEN')    print(f'{destination_folder}搜索结果UID:{result},{data}')# 设置邮箱信息# 配置 IMAP 服务器imap_server = 'imap.qiye.aliyun.com'  # IMAP 服务器地址username = 'test@example.com'  # 用户名password = '********'  # 密码port = 993  # 端口号source_folder = 'folder1'destination_folder = 'folder2'# 连接到IMAP服务器mail = imaplib.IMAP4_SSL(imap_server, port)
mail.login(username, password)print('删除前:')
before_after_move_email(source_folder, destination_folder)

mail.select(source_folder)# 删除指定的UIDresult, delete_data = mail.uid('STORE', '14', '+FLAGS', '(\\Deleted)')
mail.expunge()print('删除后:')
before_after_move_email(source_folder, destination_folder)

运行结果

image

image