【问题标题】:Getting all new messages from a Maildir in python从 python 中的 Maildir 获取所有新消息
【发布时间】:2010-04-20 01:00:38
【问题描述】:

我有一个邮件目录:

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

有什么想法吗?

【问题讨论】:

    标签: python maildir


    【解决方案1】:

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

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

    参考资料:

    【讨论】:

      猜你喜欢
      • 2012-02-10
      • 1970-01-01
      • 2012-03-08
      • 2021-03-30
      • 1970-01-01
      • 2019-09-19
      • 2013-12-13
      • 1970-01-01
      相关资源
      最近更新 更多