Обработка исключений для команды Email - PullRequest
0 голосов
/ 16 августа 2011

Как обработать исключение при сбое команды mailx,

следующее начало для обработки, но не работает,

Отрицательные сценарии для обработки команды mailx:

Когда идентификатор электронной почты имеет неверный формат, например, ganeshfriends@gmail.com Когда нет электронного письма

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

Ответы [ 2 ]

0 голосов
/ 16 августа 2011

Отрицательные сценарии для обработки команды mailx:
- Когда идентификатор электронной почты недопустим в формате, например, ganeshfriends@gmail.com
- Когда нет тела письма

Естьничего плохого в том адресе электронной почты, который вы приводите в качестве примера.

  • Если под "недействительным" вы подразумеваете, что адрес электронной почты не существует, вы не можете проверить это заранее: вам нужно отправить на него электронное письмо и посмотреть, получите ли вы отскок от получателяпочтовый сервер - очевидно, это трудно автоматизировать.
  • Если вы хотите проверить формат адреса электронной почты, даже если это сложно (см., например, эту статью ).Как минимум, вы можете проверить, что адрес содержит @ и . и текст вокруг этих символов.В 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
0 голосов
/ 16 августа 2011

Один из способов - обработать mailx код завершения процесса, и, если он не равен нулю, проанализировать его стандартный поток вывода ошибок (который перенаправляет ваша командная строка на /dev/null).

Другой способ заключается виспользуйте, например, smtplib Python .Он сообщает об ошибках в виде исключений, например smtplib.SMTPRecipientsRefused, smtplib.SMTPDataError и т. Д., Что позволяет отличать одну ошибку типа от другой.

...