Python 后缀过滤器

3 投票
1 回答
3436 浏览
提问于 2025-04-17 00:08

我正在尝试为Postfix制作一个简单的Python过滤器,目的是给某些邮件添加一个“回复到”头部。

到目前为止,我已经从标准输入中获取了邮件,并将其解析成一个邮件对象,像这样:

raw = sys.stdin.readlines()
msg = email.message_from_string(''.join(raw))

然后我对头部等进行了处理。

msg.add_header('Reply-to', 'foo@bar.com')

现在我想把处理后的邮件重新发送回Postfix。根据Postfix的过滤器说明,我应该使用“sendmail”命令将其传回去。不过,我不太确定该如何将邮件对象传给sendmail,比如是用subprocess的'call()',还是应该使用smtplib的'smtplib.SMTP()'?

那么,正确的方法是什么呢?

谢谢

1 个回答

4

你可以使用这两种方法,但smtplib.SMTP()更灵活,而且处理错误时更简单。

如果你需要一个例子,可以看看我为Python过滤器做的框架https://github.com/gryphius/fuglu/blob/master/fuglu/src/fuglu/connectors/smtpconnector.py#L67

re_inject方法正是这样做的(FUSMTPClient是smtplib.SMTP的一个子类),所以基本上可以总结为:

client = smtplib.SMTP('127.0.0.1',<yourportnumber for the receiving postfix instance>)
client.sendmail(<envelope from>, <envelope to>, <yourmessageobject>.as_string())

撰写回答