0

単純な IMAP クライアントを作成しようとしていて、最新のメッセージを 1 つ取得したいと考えています。UID 46345 のメッセージは受信トレイの最新のもので、古いメッセージは UID 46346 です。そのため、コードが期待どおりに動作しません! 最新のメッセージの UID が最も高くないのはなぜですか? 最新の日付を持つ最大の UID を信頼すべきではありませんか?

_, data = imap.uid('search', None, "UNSEEN")    
latest_email_uid = data[0].split()[-1]
_, data = imap.uid('fetch', latest_email_uid, '(RFC822.HEADER)')
raw_email = data[0][1]
print raw_email
4

2 に答える 2

3

日付順であることを保証するものではありません。

最も古いメールをフォルダー (メールボックス) A から B に移動し、もう一度 A に戻すと、新しい uid 値が割り当てられるとします。

于 2012-09-13T16:49:43.530 に答える
0

IMAP プロトコルは、メッセージ UID が古いメッセージから新しいメッセージの順に割り当てられるという保証を提供するとは思いません。この事実をクライアントに通知するために UIDVALIDITY が変更される限り、UID は時々変更されることさえあります (通常、IMAP サーバーがメールボックスのインデックスを再作成する必要がある場合)。メッセージの日付ヘッダー (または、興味がある場合は IMAP INTERNALDATE) を調べて、自分で並べ替える必要があります。

于 2012-09-13T15:47:32.417 に答える