一次获取多个IMAP消息

Dan*_*amy 5 python imap imaplib

我见过的关于使用python通过IMAP加载电子邮件的示例进行搜索,然后对结果中的每个消息ID进行查询.我想通过一次取出它们来加快速度.

Dan*_*amy 12

RFC 3501说fetch需要一个序列集,但我没有看到它的定义,该示例使用范围形式(2:4 =消息2,3和4).我发现逗号分隔的ID列表有效.在使用imaplib的python中,我有类似的东西:

    status, email_ids = con.search(None, query)
    if status != 'OK':
        raise Exception("Error running imap search for spinvox messages: "
                        "%s" % status)

    fetch_ids = ','.join(email_ids[0].split())
    status, data = con.fetch(fetch_ids, '(RFC822.HEADER BODY.PEEK[1])')
    if status != 'OK':
        raise Exception("Error running imap fetch for spinvox message: "
                        "%s" % status)
    for i in range(len(email_ids[0].split())):
        header_msg = email.message_from_string(data[i * 3 + 0][1])
        subject = header_msg['Subject'],
        date = header_msg['Date'],
        body = data[i * 3 + 1][1] # includes some mime multipart junk
Run Code Online (Sandbox Code Playgroud)