我在python中使用脚本从Postfix服务器获取邮件。此脚本提取邮件,删除标题并仅留下电子邮件的正文。然后它使用此主体通过os.system()
执行linux命令。例如,我发送带有mkdir folder
的电子邮件并创建此脚本。
当我通过邮件发送ls
时出现问题。我得到了回复: not found ls
第二个问题是mkdir
,因为它会在电子邮件中添加 ^ M 来命名。例如,我发送了mkdir folder
并创建了" folder
?"。
你有什么想法吗?
答案 0 :(得分:1)
您已经确定了问题:电子邮件中有^ M个字符,您并不期望这些字符。 (CR LF是一种常见的行结束约定; Unix通常不喜欢CR)。
尝试删除" \ r"来自您的命令:command = command.translate(None, "\r")
。
我还强烈建议您仔细考虑运行电子邮件发送的任何命令的安全隐患。做一些你想要完成的事情可能会更加安全。