воскресенье, 10 октября 2010 г.

Отправляем письмо из ODI.

Отправлять письма из ODI не сложно. Для этого есть специальный компонент, который называется OdiSendMail:


Этот компонент позволяет выслать письмо на заданные адреса, указав при этом адрес почтового сервера, имя, от которого отправляется письмо, тему и тело письма, приложив, при необходимости, один или несколько файлов в аттачмент.

Использование этого компонента в случаях отладки ETL процессов позволяет ничего дальше на этот счет не придумывать. Разработчик вставляет отправку письма себе, сам формирует тело письма, заголовок и, возможно, прикладывает файл.

Но, в случае, если необходимо отправлять почту для целей мониторинга процессов загрузки, например, сообщать на электронную почту о падениях некоторых сценариев или о других нестандартных ситуациях, намного удобнее написать отдельный пакет, который будет заниматься отправкой письма.

В случае отдельного пакета можно предусмотреть возможность отправки одних типов писем администраторам, других - бизнес пользователям или менеджерам по качеству данных.

Я предлагаю создать примерно следующий пакет:


Схема выполнения пакета:
  1. Декларация переменной #MAIL_PROJECT_CODE для передачи в пакет идентификатора списка рассылки.
  2. Декларация переменной #MAIL_SUBJECT для передачи в пакет темы письма.
  3. Декларация переменной #MAIL_BODY для передачи в пакет тела письма.
  4. Проверка, если идентификатор списка рассылки не установлен - установка значений по умолчанию.
  5. Обновление переменных #MAIL_LIST_TO и MAIL_LIST_CC из таблицы.

Для работы пакета необходимо создать в БД таблицу параметров, к которой будет иметь доступ пользователь, от имени которого работает ODI, и в которой будут храниться следующие данные:

MAIL_PROJECT_CODE - наименование списка рассылки
MAILING_LIST_TO - перечень адресов через запятую
MAILING_LIST_CC - перечень адресов для копии сообщения через запятую.


Также необходимо создать 2 переменных, которые будут использоваться как константы, для указания адреса почтового сервера и имени, от которого производится рассылка. С другой стороны, для еще большей гибкости, можно эти значения добавить в таблицу параметров рассылок.

Также, при необходимости, можно добавить переменную для передачи в сценарий отправки почтового сообщения строку с файлами, которые необходимо приложить к письму. Необходимо только учитывать особенности операционной системы, в которой выполняется агент, в части именования файлов и папок.

Сгенерировав из пакета сценарий мы можем использовать его в других пакетах для отправки почты с необходимыми сообщениями.


См. также следующее сообщение об улучшенном механизме отправки писем из ODI.

2 комментария:

  1. Зачет!!!
    Только вот некоторые заказчики (особенно банки) не разрешают использовать SMTP для отправки почты, типа несекурно и прочее. А дают API своих внутренних "хитрых" почтовых систем, приходится танцевать танец с бубном.

    ОтветитьУдалить
  2. Ну, на самом деле инкапсуляция отправки почты в отдельный пакет (а затем использование в виде сценария) как раз и позволяет протанцевать этот танец только один раз.

    ОтветитьУдалить