python - 每次在 python 中使用 subprocess.call 发送 linux 电子邮件时都会得到一个空体

标签 python linux

我正在编写一个 python 脚本,它会在引发异常时发送电子邮件。我收到了电子邮件,但是每次正文都是空的 - 我收到了 Null 邮件正文; hope that's ok 调用子进程时的消息。

这是我的代码:

subject = "This is the subject"
f = open('body.txt', "w+")
body = "Email body goes here."
f.write(body)
subprocess.call(['mail', '-s', subject, 'addr@example.com'],stdin=f)
f.close()

为什么我每次都得到一个空的 body ?我不认为我理解 subprocess 中的标准输入是如何工作的。

最佳答案

在调用 subprocess.call() 之前,您需要关闭 f 。否则,f 不会在 mail 读取它时被刷新,并且无法保证任何内容实际上已经写入文件。

关于python - 每次在 python 中使用 subprocess.call 发送 linux 电子邮件时都会得到一个空体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53197086/

相关文章:

linux - 如果没有停止,需要在 1 小时内重新启动服务器脚本

linux - 使用批处理文件将文件复制到远程桌面

c - 您如何获取要在 Linux 中使用的临时文件的文件名?

python - web2py:在模块中使用 db(...)

python - 这可能是 Anaconda 2.5.0 环境中 scipy.sparse.linalg.eigs 函数中的错误吗?

python - 如何以更简单的方式写这个

python - 如何在 Pandas 数据框中显示所有列的名称?

c - C 中的段错误

python - 我需要根据列上的值从 Pandas 数据框中制作真值表

python - 对新文档进行分类 - 随机森林、词袋