2011-08-16 67 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]