使用python从mbox文件夹中读取邮件

时间:2012-01-20 15:02:05

标签: python mbox

我想从mbox文件中读取邮件并根据它执行一些操作。我不想编写/修改mbox文件,但它会被另一个进程修改(主要是添加新邮件)。

我正在阅读此文档。 http://docs.python.org/library/mailbox.html#mailbox.mbox

但我不明白以下

  1. 我应该在阅读邮件之前调用lock()吗? (我不是写信给 文件)
  2. 无论如何我可以在其他进程中收到回调 (thunderbird)修改文件?
  3. 文件中的更改是否反映在mbox对象中?我的意思是,在创建mbox对象后,如果将新邮件添加到文件中,我是否会使用该对象访问该邮件?或者我应该再次创建一个新对象吗?
  4. PS:我不允许安装任何雷鸟插件:(

1 个答案:

答案 0 :(得分:2)

  1. 当您不修改mbox时,无需致电Mailbox.lock()。引自Mailbox.lock()的文件(强调我自己):

      

    在进行任何修改之前,您应始终锁定邮箱   它的内容。

  2. 文件更改通知超出了邮箱模块的范围。在Linux系统上,您可以使用pyinotify来获得此功能。

  3. documentation

    也回答了这个问题
      

    默认的邮箱迭代器迭代消息表示,而不是密钥   默认字典迭代器。而且,在迭代期间修改邮箱   是安全和明确的。创建迭代器后添加到邮箱的消息   迭代器不会看到它。在邮箱之前删除邮件   虽然使用迭代器中的键,但是会以静默方式跳过迭代器产生它们   可能导致>如果随后是相应的消息,则为KeyError异常   除去。

    简而言之,您需要在mbox文件更改后创建新的Mailbox实例。