python没有正确执行shell命令 "mail"

标签 python linux bash shell email

我使用以下 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/

相关文章:

java - 如何在 OSX 10.8 中设置终端路径

嵌入在 bash 中的 Python 脚本,不退出

python - 可视化 PCA 转换后的数据

python - 无法使用日期作为字符串来切片 Pandas 数据框(以日期为键)

python - 操作两个列表的最简洁方法,在 python 中返回列表列表

linux - 使用 "ar"合并 .o 和 .a 文件 (Linux)

linux - 为什么没有交换内存 'shared' 、 'buff/cache' 和 'available' 值?

c - 监控子进程的内存使用情况

python - 在 python 的 map 函数中使用赋值有什么好的替代方法?

linux - 如何使用 bash 写入除现有常规文件以外的任何文件?