欢迎访问宙启技术站
智能推送

Python中imaplib库的邮件筛选与分类功能

发布时间:2023-12-17 09:12:54

Python中的imaplib库是用于与IMAP服务器进行邮件交互的库。它提供了一系列方法来连接到IMAP服务器、选择收件箱、搜索和下载邮件等功能。下面是使用imaplib库进行邮件筛选和分类的示例代码:

import imaplib

# 连接到IMAP服务器
def connect(imap_server, username, password):
    # 连接服务器
    conn = imaplib.IMAP4_SSL(imap_server)

    # 登录
    conn.login(username, password)

    return conn


# 选择收件箱
def select_mailbox(conn, mailbox):
    # 选择收件箱
    conn.select(mailbox)

    # 返回邮件数量和邮件列表
    return conn.response('EXISTS'), conn.fetch('1:*', '(UID BODY[HEADER.FIELDS (Subject From)])')


# 搜索邮件
def search_mail(conn, criteria):
    # 根据条件搜索邮件
    conn.search(None, criteria)

    # 返回搜索结果的邮件数量和邮件列表
    return conn.response('EXISTS'), conn.fetch('1:*', '(UID BODY[HEADER.FIELDS (Subject From)])')


# 打印邮件列表
def print_mail_list(mail_list):
    for mail in mail_list:
        # 解析邮件信息
        uid = mail[0]
        data = mail[1][0][1]
        headers = data.decode('utf-8').split('\r
')

        # 获取邮件主题和发件人
        subject = [header for header in headers if header.startswith('Subject')][0]
        sender = [header for header in headers if header.startswith('From')][0]

        # 打印邮件信息
        print(f'UID: {uid}')
        print(f'Subject: {subject}')
        print(f'From: {sender}')
        print()


# 主函数
def main():
    # IMAP服务器地址、用户名和密码
    imap_server = 'imap.example.com'
    username = 'your_email@example.com'
    password = 'your_password'

    # 连接到IMAP服务器
    conn = connect(imap_server, username, password)

    # 选择收件箱
    mailbox = 'INBOX'
    exists, mail_list = select_mailbox(conn, mailbox)

    # 打印收件箱中的邮件数量
    print(f'Total mails in {mailbox}: {exists}')

    # 打印收件箱中的邮件列表
    print_mail_list(mail_list)

    # 搜索包含指定关键字的邮件
    criteria = 'SUBJECT "important"'
    exists, mail_list = search_mail(conn, criteria)

    # 打印搜索结果的邮件数量
    print(f'Total mails matching criteria "{criteria}": {exists}')

    # 打印搜索结果的邮件列表
    print_mail_list(mail_list)

    # 关闭连接
    conn.logout()


# 调用主函数
if __name__ == '__main__':
    main()

在上面的示例代码中,首先通过connect()函数连接到IMAP服务器,并通过login()方法登录。然后使用select_mailbox()函数选择收件箱,并打印收件箱中的邮件数量和邮件列表。

接下来,使用search_mail()函数搜索包含指定关键字的邮件,并打印搜索结果的邮件数量和邮件列表。search_mail()函数使用search()方法通过给定的条件搜索邮件。

最后,调用logout()方法关闭与服务器的连接。

你可以根据自己的需求修改示例代码中的IMAP服务器地址、用户名、密码、收件箱名称和搜索条件等参数来适应实际的场景。