如何在mailx命令失败时处理异常,
以下是处理的开始但不起作用,
处理mailx命令的负面情节:
当电子邮件ID格式无效时,例如ganeshfriends@gmail.com 没有电子邮件正文时
$rst = `/usr/bin/echo \"test123456\" | /usr/bin/mailx -s \'test subject\' ganeshfriends\@gmail.com 2>/dev/null; >> ~/151534/email_err.cfg`;
答案 0 :(得分:0)
一种方法是处理mailx
进程退出代码,如果它是非零解析其标准错误输出流(您的命令行重定向到/dev/null
)。
另一种方法是使用,例如Python's smtplib。它会将错误报告为异常,例如smtplib.SMTPRecipientsRefused
,smtplib.SMTPDataError
等,这样可以更轻松地将错误告诉另一个错误。
答案 1 :(得分:0)
处理mailx命令的负面情节:
- 当电子邮件ID格式无效时,如ganeshfriends@gmail.com
- 没有电子邮件正文时
您提供的电子邮件地址没有任何问题。
如果您想检查电子邮件地址的格式,即使这很棘手(例如,请参阅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" recipient@example.com