2013-05-04 58 views
0

我做这样的事情:验证邮件状态bash脚本

echo "TEST MAIL" | mail -s "subject" "[email protected]" 

它发送OK!但是我必须在shell脚本中验证邮件是否被发送。

我没有找到验证邮件是否被发送的方法。

编辑:

我已经是如果邮件应用程序的返回值是0

if [ "$?" = "0" ]; then 
    echo "Mail enviado a: $destinatarios" 

else 
    echo "Mail NO enviado a: $destinatarios" 
fi 

回答

5

你应该定义什么是“发送”唯一的验证手段为您服务。只有当消息被本地MTA接受时,“邮件”的返回状态才指定 。

仍然有很多事情可能发生,以防止传递到最终 收件人。从本地 机器上没有网络连接开始,直到收件人忽略他/她的收件箱中的邮件。

邮件传递是异步的。有机制请求交货 和阅读收据,这很少工作。您可能有更好的运气处理 未送达报告。但是,他们都可能需要任意时间才能到达。

对于这个问题,我会说零“退出”状态的“邮件”是一样好 指示成功发送的消息,因为你可以得到合理的 努力。

+0

最后我找到一个“解决方案“使用mailq命令,当我说”发送“我的意思是它不在队列中。谢谢你的时间 ! – FxckDead 2013-05-05 18:25:35

+1

@FxckDead请注意,邮件仍然可以在队列中结束并在稍后完成发送,例如,关于DNS问题。因此,排队等候的邮件并不一定意味着致命的失败。 – 2013-05-06 09:46:55

0

如果您发送电子邮件到应用程序内,您可以修改的目标应用为 “回复” 否则只要我记得有没有简单的方法.....