好的,所以发生这种令人难以置信的奇怪事情。我正在运行python脚本来生成一些输出并将其存储在一个文件中。在脚本的最后,我使用子进程模块通过postfix发送邮件。我跑
subprocess.call(['sudo mail -s "Subject" person@example.com < /path/to/file.txt'], shell=True)
即使文件包含内容,也会执行此消息mail: Null message body; hope that's ok
。我收到一封没有正文的电子邮件(但正确的主题)。
当我直接运行命令时:
sudo mail -s "Subject" person@example.com < /path/to/file.txt
我在电子邮件中收到该文件的内容。
这里出了什么问题?它完全搞砸了我的脑袋!
答案 0 :(得分:0)
正如预期的那样,这是一个完全愚蠢的错误(这些是最好的)。
我没有刷新文件句柄并发送邮件。所以消息体是空的。现在我正在使用
file_name.flush()
file_name.close()
subprocess.call(['sudo mail -s "Subject" person@example.com < /path/to/file.txt'], shell=True)
我收到的邮件有尸体。呼!