Exim过滤器管道脚本仅适用于上一封电子邮件 - 不是最新的

时间:2014-12-01 23:25:59

标签: python exim

这个小小的组合正在处理第二个到最近的电子邮件 - 而不是最新的。

这是过滤器:

# Exim filter
save /srv/domain.com/bin/mail 660
pipe "/srv/domain.com/bin/sendToMailChimp.py"

它有效 - 即我可以看到它保存到邮件文件,它确实调用脚本..太棒了!到目前为止一直很好..

这是脚本:

#!/usr/bin/python

MAILBOX_DIR = '/srv/domain.com/mailboxes/enqace/mail'
import mailbox
import logging
import time

time.sleep(10)

logging.basicConfig(filename='/srv/domain.com/mailboxes/enqace/logging.log',level=logging.DEBUG)

inbox = mailbox.mbox(MAILBOX_DIR)

logging.info('Script called')

for key in inbox.iterkeys():
    logging.info(key)
    message = inbox[key]
    subject = message['subject']
    logging.info(subject)


logging.info('===FINISH====')

(打印0-6以及每个主题行)

我可以拖尾日志。它在收到电子邮件时运行 - 但似乎解析邮件mbox并在获取最新电子邮件(即最后一封电子邮件)之前完成。然后它会在下次收到电子邮件时点击最后一个(最近一次)。因此,如果邮件文件中已有6封邮件,则新邮件 - 第7条 - 主题行不会出现在日志条目中。只有当第8个进来时..

脚本是否正在快速运行 - 就像exim有机会发送到邮件文件之前一样?如果是这样的话,那该怎么办?添加睡眠(10)似乎没有做任何事情,如上所示..

更新: 通过提取python提示我可以看到python在管道外部调用时确实获得了正确数量的键(即消息号)

MAILBOX_DIR = 'mail'
import mailbox
inbox = mailbox.mbox(MAILBOX_DIR)

for key in inbox.iterkeys():
    print key

(打印0-7)

0 个答案:

没有答案