我使用以下 bash 代码发送电子邮件:
echo abc | mail -s Subject abc@def.com
它工作正常。现在我想在 python 中使用相同的命令,所以我写了以下内容:
call(["echo abc" "|" "mail", "-s Subject", "abc@def.com"], shell=True)
此 python 代码不会向我发送电子邮件,当我调用 python 脚本时使用
$python email.py
我从 shell 中得到以下信息
No mail for rex
这是怎么发生的?
最佳答案
如果您使用的是 Python,则不需要 echo
和命令之间的管道。
您可以启动一个进程并使用 communicate
方法:
import subprocess
def send_message(recipient, subject, body):
process = subprocess.Popen(['mail', '-s', subject, recipient],
stdin=subprocess.PIPE)
process.communicate(body)
关于python没有正确执行shell命令 "mail",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15992515/