20 апреля 2010

Автоматическая отправка документов клиентам по электронной почте

Обычная бизнес-задача: При формировании расходной накладной отправлять клиенту по электронной почте XLS-файл с электронной копией этой расходной накладной.

Плёвая задача! - сказали программисты
..и забацали следующий алгоритм:

В момент формирования расходной накладной, сразу после её формирования, на клиентской части вызываем через COM-объект excelя, туда передаём строки от расходной накладной. Потом вызываем через MAPI почтовый клиент по-умолчанию пользователя и даём ему команду отправить электронное письмо с вложенным XLS-файлом по указанному адресу. А клиент-то MS Outlook - ну там пользователь еще должен подождать 30 секунд и нажать на кнопку "разрешить".

Афигеть! - сказали пользователи
Теперь при формировании расходной накладной (10-90 секунд) необходимо еще выжидать (1-5 минут) на формирование и отправку электронного письма. И для отправки еще и на кнопку нажимать. И комп тормозит всё это время.

Хм! - смутились программисты
- ну тогда мы сократим время на отправке, но пользователям не будет возвращаться письмо о недоставке. И надо будет забацать какую-то тулзень по отправке XLS-файлов по указанным адресам. И начали программисты искать как отправлять письма не используя MAPI. И наткнулись они на SMTP. Только не знали они настроек ближайшего SMTP-сервера. Пошли они к админам.

А нафига оно вам? - спросили админы
И поведали программисты какую автоматизацию они творят. Взялись за свои головы админы и стали прикидывать как оно тормозит и почему пользователи рассказывают, что их компьютеры тормозят.
Но бизнесу-то необходимо отправлять по электронной почте эти самый XLS-файлы...

Давайте вместе - предложили админы программистам
Хм - смутились программисты, - а справитесь?
Справимся - ответили админы, - вы нам давайте в папочку складывайте все XLS-файлы которые отослать надо. А вместе с  XLS-файлом кладите файлик, где указан электронный адрес куда письмо доставить надо.

Так и порешили. 
Теперь есть папка на сервере, если туда положить файлик 4455664.xls а потом туда положить еще файлик 4455664 (без расширения), внутри которого будет указано v.pupkin@gmail.com, то через какое-то время файлик 4455664.xls отправится на ящик v.pupkin@gmail.com После успешной отправки, файлики будут удалены, а в случае какой-либо проблемы админы будут оповещены.

Программеры так и сделали. Только хотели они снова пользователей напрягать - ведь формировать XLS-файлик надо же где-то. Но подумали они над этим еще раз хорошенько и придумали использовать "пакетный сервер" (batch-server) на котором и формируют через COM-объект XLS-файлик и складывают все в папочку на сервере.

Админы тоже сделали свою работу - написали скрипт на Power Shell для сканирования и отправки файликов по указанным электронным адресам. Скрипт запускается каждые 15 минут.


Всем счастье настало:

  • Программисты задачу решили
  • Админы поглумились над программистами
  • У пользователей компы перестали тормозить


Мораль: Надо вместе работать.
P.S. Скрипт могу выслать по запросу.

Комментариев нет: