1

私はメールディレクトリを持っています:

foo@foo:~/Maildir$ ls -l
total 288
drwx------ 2 foo foo 155648 2010-04-19 15:19 cur
-rw------- 1 foo foo    440 2010-03-20 08:50 dovecot.index.log
-rw------- 1 foo foo    112 2010-03-20 08:49 dovecot-uidlist
-rw------- 1 foo foo      8 2010-03-20 08:49 dovecot-uidvalidity
-rw------- 1 foo foo      0 2010-03-20 08:49 dovecot-uidvalidity.4ba48c0e
drwx------ 2 foo foo 114688 2010-04-19 16:07 new
drwx------ 2 foo foo   4096 2010-04-19 16:07 tmp

Python では、すべての新しいメッセージを取得しようとしています (Python 2.6.5rc2)。まず、「Maildir」を取得します。

>>> import mailbox
>>> md = mailbox.Maildir('/home/foo/Maildir')
>>> md.iterkeys().next()
'1269924477.Vfc01I4249fM708004.foo'

しかし、「Maildir/new」にアクセスするにはどうすればよいでしょうか? これは動作しません:

>>> md = mailbox.Maildir('/home/foo/Maildir/new')
>>> md.iterkeys().next()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib/python2.6/mailbox.py", line 346, in iterkeys
    self._refresh()
  File "/usr/lib/python2.6/mailbox.py", line 467, in _refresh
    for entry in os.listdir(subdir_path):
OSError: [Errno 2] No such file or directory: '/home/foo/Maildir/new/new'
>>>

何か案は?

4

1 に答える 1

2

フォルダ/home/foo/Maildir/newは Maildir ではなく、maildir の一部です。を使用する場合mailbox.Maildirは、仕様の一部であるサブディレクトリとファイルを無視する必要があります。そうしないと、Maildir としてまったく扱われません。

Maildir モジュールは とからメッセージを読み取る必要newがありcur、必要に応じて から または にメッセージを移動することnewもできcurます。この実装がどのように機能するかを知るには、コードを確認する必要があります。close()flush()

参考文献:

于 2010-04-19T17:00:38.543 に答える