0

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`;
4

2 回答 2

0

处理 mailx 命令的负面情况:
- 当电子邮件 ID 是无效格式时,例如 ganeshfriends@gmail.com
- 当没有电子邮件正文时

您作为示例提供的电子邮件地址没有任何问题。

  • 如果“无效”是指电子邮件地址不存在,则无法事先对其进行测试:您必须向其发送电子邮件并查看是否收到来自收件人邮件服务器的退回邮件——显然这很难自动化。
  • 如果您想检查电子邮件地址的格式,即使这样也很棘手(例如,请参阅这篇文章)。至少,您可以检查地址是否包含 a@和 a.以及这些字符周围的一些文本。在 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
于 2011-08-16T12:53:13.887 回答
0

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

另一种方法是使用例如Python 的 smtplib。它将错误报告为异常,如smtplib.SMTPRecipientsRefused,smtplib.SMTPDataError等,这使得区分一种错误与另一种错误变得更容易。

于 2011-08-16T11:53:01.420 回答