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

重要

风险提示:下述代码在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 imaplib


def 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)
# 删除指定的UID
result, delete_data = mail.uid('STORE', '14', '+FLAGS', '(\\Deleted)')
mail.expunge()

print('删除后:')
before_after_move_email(source_folder, destination_folder)

运行结果

image

image