Python 后缀过滤器
我正在尝试为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())