3

次のコードを使用してGmailからすべてのメールをダウンロードしていますが、残念ながら、返されるメールの総数はアカウント内のメールの総数と一致しません。特に、最初の43通のメッセージを受け取ることができますが、受信トレイで見逃されたメッセージは20通以上あります。おそらく、これはプルバックできる数のある種の制限です(?)。支援を提供してくれてありがとう!

import imaplib, email, base64

def fetch_messages(username, password):
    messages = []
    conn = imaplib.IMAP4_SSL("imap.gmail.com", 993)
    conn.login(username, password)
    conn.select()
    typ, data = conn.uid('search', None, 'ALL')

    for num in data[0].split():
        typ, msg_data = conn.uid('fetch', num, '(RFC822)')
        for response_part in msg_data:
            if isinstance(response_part, tuple):
                messages.append(email.message_from_string(response_part[1]))
        typ, response = conn.store(num, '+FLAGS', r'(\Seen)')
    return messages
4

1 に答える 1

1

以下を使用して、すべての電子メール メッセージを取得します。

resp,data = mail.uid('FETCH', '1:*' , '(RFC822)')

そして、私が使用するすべてのids を取得するには:

result, data = mail.uid('search', None, "ALL")
print data[0].split()

与えます:

['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', ... etc ]

編集

私の場合、フォローは202の日付を返します。これは、OPが探しているものを超えており、正しい数です。

resp,data = mail.uid('FETCH', '1:*' , '(RFC822)')
messages = [data[i][1].strip() for i in xrange(0, len(data), 2)] 
for msg in messages:
    msg_str = email.message_from_string(msg)
    print msg_str.get('Date')
于 2013-02-25T20:40:07.470 に答える