这个小小的组合正在处理第二个到最近的电子邮件 - 而不是最新的。
这是过滤器:
# 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)