我正在尝试为postfix创建一个简单的Python过滤器,在某些消息的“Reply-to”标题中添加。
到目前为止,我所做的是从stdin获取电子邮件,并将其解析为如下所示的电子邮件对象:
raw = sys.stdin.readlines()
msg = email.message_from_string(''.join(raw))
然后我玩过标题等。
msg.add_header('Reply-to', 'foo@bar.com')
现在想把它重新注入后缀。阅读与postfix相关的filter readme,我应该使用'sendmail'命令将其传回去。但是,我不确定如何将电子邮件对象传递给sendmail,例如使用subprocess的'call()'或者我是否应该使用smtplib的'smtplib.SMTP()'?
什么是'正确'方法?
由于
答案 0 :(得分:4)
您应该能够使用这两种方法,但smtplib.SMTP()更灵活,使错误处理更容易。
如果您需要示例,请查看我的framework for python filters: 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())