2

Maildirを開き、「新しい」メッセージを「cur」に更新し、メールディレクトリをフラッシュして閉じるコードをPythonで作成しました。問題は、スクリプトを使用してこの後にまったく同じ Maildir を再度読み取ると、すべてのメールが新しいものとして読み取られることです!

(実際に OS を直接見ると、メール ファイルが Maildir/new から Maildir/cur に移動されていることがわかります)

何か案は?

mail = Maildir(self._mail_dir, factory=MaildirMessage)
mail.lock()
for i, (key, m) in enumerate(mail.iteritems()):
  if m.get_subdir() == "new":
    m.set_subdir("cur")
    m.add_flag("S")  # Message seen
    mail[key] = m
  do_something_else(m) 
mail.flush() 
mail.close()

前もって感謝します!

4

1 に答える 1

3

最後に修正を見つけました。基本的に、 factory=MaildirMessageの代わりにfactory=Noneを渡すだけで済みます。

以下のリンクのドキュメントを読むと、 factory=Noneが実際には MaildirMessage ファクトリを選択しているように見えますが、明らかに追加の動作も追加されています。

http://docs.python.org/2/library/mailbox.html#maildir

于 2012-11-18T22:25:06.653 に答える