Luc*_*man 7 python stdin postfix-mta
我想让postfix将所有电子邮件发送到将扫描电子邮件的python脚本.
但是,如何将postfix的输出传递给python?
Python的stdin是什么?
你能给出一个代码示例吗?
lfa*_*one 10
您应该将文件对象直接传递给电子邮件解析器,而不是按照Michael的建议调用sys.stdin.readlines()然后循环并传递行email.FeedParser.FeedParser().feed().
email.message_from_file(fp)为此目的,标准库提供了连通功能.因此,您的代码变得更加简单:
import email
msg = email.message_from_file(sys.stdin)
Run Code Online (Sandbox Code Playgroud)
要将邮件从postfix推送到python脚本,请将这样的行添加到postfix别名文件中:
# send to emailname@example.com
emailname: "|/path/to/script.py"
Run Code Online (Sandbox Code Playgroud)
该巨蟒email.FeedParser模块可以构造一个代表从标准输入一个MIME电子邮件消息的对象,通过做这样的事情:
# Read from STDIN into array of lines.
email_input = sys.stdin.readlines()
# email.FeedParser.feed() expects to receive lines one at a time
# msg holds the complete email Message object
parser = email.FeedParser.FeedParser()
msg = None
for msg_line in email_input:
parser.feed(msg_line)
msg = parser.close()
Run Code Online (Sandbox Code Playgroud)
从这里开始,您需要迭代MIME部分msg并相应地对其进行操作.有关email.Message您需要的方法,请参阅有关对象的文档.例如,email.Message.get("Header")返回标头值Header.
| 归档时间: |
|
| 查看次数: |
5837 次 |
| 最近记录: |