通过调用bash脚本发送电子邮件时出错

时间:2014-11-14 03:14:03

标签: python bash email subprocess ssmtp

我在Raspbian OS上的sendmail.sh脚本能够成功发送电子邮件。但是当它从python脚本调用时,我收到一条"mail: can not send message: process exited with non zero status"错误消息。我已经验证通过手动运行sendmail.sh来正确配置ssmtp。

sendmail.sh

#!/bin/bash
echo "test" | mail -s "test msg" myemailaddress
sendmail.sh上的

权限是777. sendmail.sh和sendmail.py在同一目录中。

sendmail.py

import os
import subprocess
subprocess.call(['./sendmail.sh'])

我用来运行python的命令 - sudo python sendmail.py

我不明白为什么会发生错误。很明显,python正在调用sendmail.sh并且脚本上设置了正确的权限。如果手动运行sendmail.sh,邮件将正确发送。

2 个答案:

答案 0 :(得分:1)

根本原因是ssmtp mail给出的错误消息,这是最无益的。

快速搜索显示http://www.raspberrypi.org/forums/viewtopic.php?t=46218&p=386393,其中显示以下内容:

  

尝试使用附加的-d参数运行该命令以获取更多调试信息,以帮助确定问题的原因:

     回声"测试" | mail -d -s"测试" myemail@mydomain.co.uk

     

< ...>

     

我检查了我的错误日志,并注意到了这一点:

     

< date time> raspberrypi sSMTP [3477]:<一堆消息,包括显示根本原因的错误>

答案 1 :(得分:-2)

您可以尝试以下命令:

os.system('./sendmail.sh')