2011-08-16 66 views
0

如何处理异常时的mailx命令获取失败,异常处理电子邮件命令

以下是处理,但没有工作,

负scenrios处理mailx命令来反冲启动:

当电子邮件ID是无效的格式,像[email protected] 如果没有电子邮件正文

$rst = `/usr/bin/echo \"test123456\" | /usr/bin/mailx -s \'test subject\' ganeshfriends\@gmail.com 2>/dev/null; >> ~/151534/email_err.cfg`; 
+0

'2>的/ dev/null的'丢弃'mailx'的错误信息。 –

+0

你使用什么语言? '$ rst = \'...'不是一个unix shell语法。 –

回答

0

一种方法是处理mailx进程退出代码,如果它非零则解析其标准错误输出流(您的命令行重定向到/dev/null)。

另一种方法是使用例如Python's smtplib。它会将错误报告为例外情况,如smtplib.SMTPRecipientsRefused,smtplib.SMTPDataError等,这使得更容易从另一个错误中分辨出一种错误。

0

处理mailx命令来负scenrios:
- 当电子邮件ID是无效的格式,像[email protected]
- 如果没有电子邮件正文

没有什么不对的电子邮件作为例子,你给的地址。

  • 如果“无效”表示您的电子邮件地址不存在,您将无法事先测试:您必须发送一封电子邮件,看看您是否收到从收件人邮件服务器退回的邮件 - - 显然这很难自动化。
  • 如果您想检查电子邮件地址的格式,即使这很棘手(请参阅,例如,this article)。至少,您可以检查地址是否包含@以及围绕这些角色的一些文字。在bash你可以写

    if [[ "$addr" == ?*@?*.?* ]]; then echo OK; else echo BAD; fi

要测试的身体,你必须捕捉程序的输出,并检查它是否是空的:

body=$(/some/program ...) 
if [ -z "$body" ]; then 
    echo "ERROR: email body is empty!" 
    exit 
fi 

echo "$body" | /usr/bin/mailx -s "subject" [email protected]