首页 > 解决方案 > 使用 shell 和通过 subprocess.call 发送电子邮件时的不同结果

问题描述

外壳代码:

msg="body of the mail"

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

蟒蛇代码:

msg="body of the mail"

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

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

但在我的 python 代码中,我收到带有主题的电子邮件。

我怎样才能收到带有主题和消息的电子邮件。

标签: pythonpython-2.7shellemailsubprocess

解决方案


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

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 子进程命令


推荐阅读