0

mailx コマンドが失敗した場合の例外の処理方法、

以下は、ハンドリングのキックスタートですが、機能していません。

mailx コマンドを処理するための否定的なシナリオ:

ganeshfriends@gmail.com のようにメール ID が無効な形式の場合 メール本文がない場合

$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

1 つの方法は、mailxプロセスの終了コードを処理し、ゼロ以外の場合は標準エラー出力ストリームを解析することです (コマンド ラインは にリダイレクトします/dev/null)。

別の方法は、たとえばPython の smtplibを使用することです。smtplib.SMTPRecipientsRefused、などの例外としてエラーを報告しsmtplib.SMTPDataErrorます。これにより、ある種類のエラーを別の種類のエラーと簡単に区別できます。

于 2011-08-16T11:53:01.420 に答える