使用shell和subprocess.call发送电子邮件时的结果不同

时间:2018-05-02 05:10:50

标签: python python-2.7 shell email subprocess

Shell代码:

msg="body of the mail"

echo "$msg" | mailx -s "ERROR" udhai

Python代码:

msg="body of the mail"

subprocess.call(msg + " | mailx -s 'ERROR:' udhai",shell=True)

当我执行我的shell脚本时,我收到电子邮件到udhai帐户, 邮件(邮件正文)和主题(“错误:”)。

但是在我的python代码中,我只收到了 的电子邮件。

如何收到包含主题和消息的电子邮件。

1 个答案:

答案 0 :(得分:2)

您可以尝试通过以下方式替换您的流程调用:

subprocess.call("echo '"+ msg + "' | mailx -s 'ERROR:' udhai",shell=True)

否则您可以通过以下方式更改它:

ps = subprocess.Popen(('echo', msg), stdout=subprocess.PIPE)
output = subprocess.check_output(('mailx', "-s 'ERROR:' udhai"), stdin=ps.stdout)
ps.wait()

请参阅Python subprocess command with pipe