我设置了一个筛子过滤器,当它检测到有关包裹递送的邮政服务电子邮件时,它会调用 Python 脚本。筛子过滤器工作正常并可靠地调用 Python 脚本。但是,Python 脚本不能可靠地完成它的工作。这是我的 Python 脚本,简化为相关部分:
#!/usr/bin/env python3
import sys
from email import message_from_file
from email import policy
import subprocess
msg = message_from_file(sys.stdin, policy=policy.default)
if " out for delivery " in str(msg.get_body(("html"))):
print("It is out for delivery")
我收到邮件" out for delivery "
正文中包含字符串但脚本没有打印出来的电子邮件"It is out for delivery"
。我已经检查了消息中的 HTML 以确保它是一致的并且是 100% 一致的。但令人沮丧的是,如果我从我的邮件阅读器中保存应该触发脚本的消息sieve-test
,然后手动输入,那么脚本 100% 的时间都有效!
为什么我的脚本在实际邮件传递过程中从不工作,但在我测试它时总是工作sieve-test
?
笔记:
电子邮件仅包含一个部分,即 HTML,因此我必须使用 HTML 部分。
我知道我可以用筛子做身体测试。出于此问题范围之外的原因,我在 Python 中这样做。