gpt4 book ai didi

python - 从 python 中的 Maildir 获取所有新消息

转载 作者:行者123 更新时间:2023-12-01 06:17:09 25 4
gpt4 key购买 nike

我有一个邮件目录:

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'
>>>

有什么想法吗?

最佳答案

文件夹/home/foo/Maildir/new不是Maildir,它是maildir的一部分。如果您想使用mailbox.Maildir,您需要忽略属于规范一部分的子目录和文件。否则,您根本不会将其视为 Maildir。

Maildir 模块应该newcur 读取消息,并且可以选择将消息从 new 移动到cur 当您 close()flush() 时。要了解此实现是如何实现的,您必须查看代码。

引用文献:

关于python - 从 python 中的 Maildir 获取所有新消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2669122/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com