Отправка электронной почты с помощью локального почтового клиента из 1С, развернутой под удаленным рабочим столом

Печать - Печатные формы документов

письмо почта Outlook Thunderbird Mozilla почтовый клиент локальный RDP remote

3
Решение для интерактивной (нажал-отредактировал) отправки электронных писем и печатных форм через почтовый клиент (Thunderbird, Outlook) находящийся на локальном компьютере, из конфигурации 1С, развернутой под удаленным рабочим столом (RDP, remote-app). Подходит также для локального развертывания 1С. Представлен пример быстрой интеграции с конфигурациями "Управление торговлей 10.3", "Управление производственным предприятием 1.3", "Комплексная автоматизация 1.1", "Бухгалтерия предприятия 2.0".

Оглавление

1. Введение и описание задачи

2. Основные сложности

3. Решение

3.1 Структура

3.2 Варианты развертывания

3.3 Компоненты

4. Компоненты решения и порядок внедрения

4.1 Почтовый брокер

4.2 Дополнительные объекты к конфигурации 1С

4.3 Описание доработки типовых конфигураций

4.3.1 Доработка конфигураций УТ 10.3, УПП 1.3, КА 1.1, и других, основанных на данном семействе.

4.3.2 Доработка конфигурации БП 2.0, и других на ее основе.

4.3.3 Нюансы

4.4 Формат промежуточных файлов

Заключение

1. Введение и описание задачи

Несмотря на активное развитие управляемых конфигураций 1С, которые могут эффективно работать практически на любом клиентском компьютере, все еще актуальным является развертывание конфигураций на обычных или управляемых формах на Windows Server в режиме удаленных рабочих столов (RDP) или remote-app. В ряде случаев это оправдано технически, экономически, по соображениям безопасности, и уклониться от такого варианта развертывания нельзя.

При этом, пользователям часто требуется отправлять печатные формы, рождающиеся в 1С (например, счета на оплату, акты выполненных работ, договоры, претензии и другие документы, с факсимиле или без такового) клиентам по электронной почте. Разумеется, значимой юридической силы такая отправка иметь не будет, но, тем не менее, этот способ передачи счетов или предварительного обмена документацией (или ее образцами), является крайне популярным.

Зачастую, у пользователя, который не всю свою жизнь проживает в 1С, установлен локальный почтовый клиент (мейлер) типа Outlook, Thunderbird, The Bat! и т.п., в котором находится значимый архив почты. В рамках этой публикации мы рассматриваем ситуацию развертывания 1С на сервере рабочих столов, и эксплуатации локального почтового клиента непосредственно на компьютерах пользователей.

В этих условиях, было бы предпочтительно, чтобы пользователь 1С мог бы вывести на экран печатную форму, нажать кнопку "отправить по электронной почте", как можно быстрее интерактивно отредактировать сообщение перед отправкой (повысить, так сказать, теплоту продаж, приятными словами клиенту), после чего данное сообщение было бы отправлено и помещено в архив локального почтового клиента.

2. Сложности

К сожалению, почтовый клиент находится на локальном компьютере, а 1С клиент - на удаленном, и прямого способа передать файл-вложение с печатной формой на почтовый клиент не существует. Приходится сохранять вложение в PDF (XLS), перебрасывать его каким-либо способом с удаленного рабочего стола на локальный, и вкладывать в создаваемое на локальном компьютере письмо. Что крайне трудозатратно, и при сколь-нибудь значимом объеме отправляемых документов (например, счетов, менеджером по продажам), начинает отнимать почти все рабочее время.

Можно конечно воспользоваться штатными возможностями конфигурации 1С по отправке почты, но и этот способ имеет следующие недостатки.

  • письма сохраняются как документы, а их вложения - в хранилища значений, непосредственно в информационную базу, что, со временем приводит к ее разрастанию (крайне критично для файловых баз); как без доработок сделать отправку писем без их сохранения в журнал, лично я не знаю;
  • архив локального почтового клиента не содержит в папке "Отправленные" писем, отправленных таким образом; можно организовать отправку на собственный же адрес копий писем, но эти письма будут изначально попадать во "Входящие"; а если и для пересортировки таких писем настроить специальный фильтр, то трудозатраты по сопровождению этого решения на рабочем месте каждого менеджера становятся слишком велики;
  • платформа 8.2, которой некоторые еще пользуются для УТ/УПП/КА, не позволяет напрямую работать с защищенными версиями почтовых протоколов, на которые перешли почти все почтовые хостеры;
  • зачастую, по соображениям безопасности, серверу удаленных рабочих столов вообще запрещен выход в интернет, включая почтовые протоколы;
  • пользователи лишены привычного интерфейса локального почтового клиента;
  • приходится дублировать и сопровождать настройки учетных записей электронной почты не только на локальных почтовых клиентах, но и в 1С.

Иногда, даже несмотря на то, что клиент 1С развернут на локальном компьютере, т.е. "рядом" с почтовым клиентом, пользователь предпочел бы отправлять письма именно через почтовый клиент. И хотя возможность включить внешний почтовый клиент присутствует в оговоренных в описании публикации типовых конфигурациях (Комплексная автоматизация 1.1, Управление производственным предприятием 1.3, Управление торговлей 10.3), без доработок печатные формы через него не отправляются. Данное решение подходит и для этого варианта развертывания тоже.

3. Решение

3.1 Структура

Для решения задачи и устранения вышеозначенной проблемы была разработана следующая схема:

В конфигурацию 1С вносятся дополнительные объекты (1 новая обработка, 1 константа, 1 роль и 1 подсистема), составляющие "наш" механизм отправки почты, а также точечные изменения в общие модули конфигурации (одно для конфигураций УТ 10 / КА 1.1 / УПП 1.3), которые перехватывают данные, направляемые из диалога печати штатному механизму отправки почты, и делегируют их нашему механизму.

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

На каждом клиентском компьютере действует специально разработанное приложение - "Почтовый брокер", которое периодически опрашивает папку, получает оттуда промежуточные файлы именно для данного пользователя (соответствующие определенному шаблону имени файла) передают их почтовому клиенту (в настоящее время поддерживаются MS Outlook и Mozilla Thunderbird), который открывает для интерактивного редактирования сформированное сообщение со всеми вложениями. Промежуточный файл после этого удаляется.

Пользователь редактирует сообщение и отправляет его (либо отказывается от отправки). Если сообщение отправлено, оно поступает в архив папки "Отправленные" почтового клиента, и ничем не отличается от иных сообщений, отправленных пользователем без участия 1С.

Интервал опроса, каталог обмена и шаблон имен файлов с письмами, предназначающихся именно для данного экземпляра брокера, настраиваются в почтовом брокере.

Указанная схема представлена, для наглядности, на рисунке, в одном из вариантов развертывания.

Схема

3.2 Варианты развертывания

Ключевым моментом в развертывании системы является определение общей папки, куда будут складываться данные сообщения. Здесь предлагается несколько вариантов:

1. (Как на рисунке) Общая папка находится на сервере терминалов (RDP), или на каком-либо другом сервере (хоть даже на примитивной виртуальной машине на базе linux с самоочищающейся общей папкой на samba), и доступна всем клиентам равноправно. Каждый клиентский брокер ссылается через сеть Microsoft на нее. Файлы создаются с шаблоном <Имя пользователя 1С>-<уникальный код письма>.xml, и подхватываются брокерами по шаблонам вида "<Имя пользователя 1С>-*.xml".

2. Общая папка находится на каждом клиенте в одном и том же месте (т.е. по одинаковому пути), и прописана на стороне 1С через ссылку на tsclient (например, \\tsclient\c\mail1c), если на удаленную машину можно пробросить диски. Почтовые брокеры каждого клиента настроены на одну и ту же папку (c:\mail1c), только эта папка у каждого клиента своя.

3. Клиент 1С находится на одном компьютере с брокером и почтовым клиентом (т.е. все на локальном компьютере, или все в терминале), и работает через временную папку. И все это просто потому, что пользователь желает отправлять печатные формы из 1С через почтовый клиент.

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

5. Вариант, когда промежуточные файлы вообще создаются не клиентом 1С, а каким-либо другим программным продуктом.

3.3 Компоненты

Таким образом, предлагаемое решение содержит:

  • приложение почтового брокера;
  • дополнительные объекты к конфигурации 1С, необходимые для формирования промежуточных файлов; указанные объекты можно доработать на свое усмотрение;
  • описание доработки типовых конфигураций УТ 10.3, УПП 1.3, КА 1.1 для того, чтобы штатная функция отправки вложений почтой использовала обработку, описанную строкой выше.
  • описание формата промежуточных "почтовых" файлов, на случай, если разработчик пожелает генерировать эти файлы каким-либо иным способом (собственным модулем в 1С, вообще иной программой, и т.п.)

Внедрение данного решения, при вариантах №№ 1-3 (указанных выше) занимает не более 30 минут, при возможности монопольного доступа к конфигурации. Ниже представлено описание компонентов и порядок внедрения для варианта №1.

4. Описание компонентов и порядок внедрения

4.1 Почтовый брокер

Почтовый брокер является приложением Win32, разработан на FreePascal с использованием IDE Lazarus. Подтверждена его работа под Windows XP, Vista, а также версий 7, 8, 8.1 и 10, под 32 и 64-битными версиями систем. На данный момент он не подписан доверенным сертификатом, поэтому при его первом запуске у ОС могут появиться вопросы о его "благонадежности". Особенно если это приложение будет запускаться через сеть из общей папки. Разумеется, запуск данного приложения следует разрешить.

Как только дойдут руки, я опубликую исходный код, чтобы его можно было доработать на усмотрение внедренца. Возможно доработать брокер таким образом, чтобы он поддерживал TheBat, иные мейлеры, или даже, полагаю, обращался по API к Web-почтовым клиентам.

Microsoft Outlook запускается брокером через OLE, а Mozilla Thunderbird - через командную строку. При использовании Thunderbird имеется ограничение: если вы отправите из 1С письмо, не закрыв в почтовом клиенте предыдущее, в некоторых версиях Thunderbird окно сообщения не откроется. Это ограничение Thunderbird, я поищу, как его преодолеть.

Порядок внедрения

1. Скачать приложение (mailbroker.exe), доступное по ссылке внизу данной публикации.

2. Скопировать в любую удобную папку на клиентском компьютере, где установлен доступ к RDP для работы с 1С, и локальный почтовый клиент. Специальная процедура установки не требуется.

2. Запустить. Приложение запускается в свернутом режиме, отображая ярлык на панели уведомления (в "трее"). Следует щелкнуть правой кнопкой на этот ярлык и выбрать "Настройки". Откроется окно, представленное на рисунке.

Окно настроек почтового брокера

3. В окне настроек задать следующую информацию:

  • В поле "Маска файлов" указать маску по аналогии с той, что представлена на рисунке. Здесь предполагается, что пользователь ИБ 1С, соответствующий оператору данного компьютера, имеет краткое имя "ПетровПП". Подстановочные знаки ? и * в маске стандартны, и применяются по правилам dos/windows. На другом компьютере, где сидит другой пользователь, эта информация будет иной. Если в информационной базе нет поименованных пользователей (т.е. авторизация не настроена), то в следует использовать маску ПользовательПоУмолчанию*.xml".
  • В поле "Каталог мониторинга" следует выбрать каталог, в который удаленная 1С будет помещать промежуточные файлы с письмами. Ознакомьтесь с вариантами развертывания, которые были упомянуты выше. Каталог должен быть доступен пользователю, запускающему брокер, для записи (чтобы брокер мог удалять файлы, которые он передал почтовому клиенту в виде сообщений).
  • В поле "Интервал опроса" рекомендуется оставить значение в 1с (1000 мс).
  • В поле "Почтовый клиент" следует выбрать используемый и настроенный почтовый клиент.

4. Нажать кнопку "Применить", после чего закрыть окно кнопкой [X] в правом верхнем углу.

5. Провести тестирование, как указано в следующем разделе.

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

Сохраненные настройки хранятся в файле mailbroker.ini каталога AppData\Local текущего пользователя системы.

4.2 Дополнительные объекты к конфигурации 1С

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

Конфигурация содержит следующие объекты:

Дерево конфигурации

Подсистема "в_ВЭП" объединяет все объекты, представленные на рисунке, кроме обработки "в_ВЭП_ТестОтправкиПочты".

Роль "в_ВЭП_ОтправкаПочты" предоставляет доступ к необходимым объектам, для отправки почты, а также является сигнальной ролью для активации перехваченного кода типовой логики формирования писем, о котором будет сказано в следующем разделе.

Константа "в_ВЭП_Настройки" хранит упакованную структуру с настройками модуля, о которых будет рассказано чуть ниже.

Обработка "в_ВЭП_Брокер" содержит основную логику формирования промежуточных файлов из исходных данных, доступных программисту, и в необходимом формате.

Обработка "в_ВЭП_ТестОтправкиПочты" содержит простейший пример передачи писем локальному почтовому клиенту с использованием данного модуля. Ею можно воспользоваться через меню "Операции - Обработки", если запустить конфигурацию как отдельную информационную базу.

Порядок тестирования

1. Создать пустую информационную базу и загрузить туда конфигурацию. Запустить информационную базу.

2. Через меню "Операции - обработки" открыть обработку "(В) Брокер внешней электронной почты". Будет отображена форма, представленная на рисунке.

Настройки со стороны 1С

В ней следует совершить следующие действия:

  • Флажок "Настройки выполнены (модуль активен)" взвести.
  • В поле "Каталог выгрузки" следует указать тот же каталог, который указывался в разделе, посвященном настройке почтового брокера, но с той поправкой, что сейчас этот каталог указывается со стороны 1С:
    • это может быть локальный каталог здесь, на сервере, но удаленный (сетевой) для брокера;
    • может быть сетевой для обоих сторон (как указано в данном примере);
    • a может быть локальный для каждого брокера (например C:\Mailbox1C на каждом клиентском компьютере), но одинаково выглядящий для 1С (находящемся на сервере RDP) сетевой каталог, описанный через условное имя tsclient. Для данного примера это будет \\tsclient\c\Mailbox1C. Разумеется, в этом случае, на каждом клиентском компьютере должен быть создан такой каталог, что немного некрасиво, но иногда - единственный возможный вариант.
  • Применить указанные настройки, нажав кнопку "Сохранить".

3. Через меню "Операции - обработки" открыть обработку "(В) Тест отправки почты через брокер". Сформировать тестовое сообщение, например так, как показано на рисунке, и убедиться, что в каталоге выгрузки появился файл вида "ПользовательПоУмолчанию-f41452s0-0da3-21a5-b0d1-00ca54b6a431.xml". Уникальное цифробуквенное сочетание будет сгенерировано каждый раз случайно. Если в тестовую конфигурацию был добавлен именованный пользователь, то вместо префикса "ПользовательПоУмолчанию" будет указано краткое имя текущего пользователя. Учтите этот момент при настройке брокера.

Образец тестового сообщения со стороны 1С

4. На стороне брокера, если маска файла настроена с учетом имени текущего пользователя (или его отсутствия, т.е. ПользовательПоУмолчанию-*.xml), в используемом почтовом клиенте будет незамедлительно открыто письмо для интерактивного редактирования.

Образец тестового сообщения со стороны почтового клиента

В случае каких-либо проблем, на панели уведомлений будет выведена описание ошибки, после чего программа прервет опрос каталога на некоторое время (10 секунд), для того, чтобы пользователь мог предпринять меры для устранения ошибки, или закрыть брокер. Затем для неотправленных писем будет предпринята повторная попытка.

Образец ошибки, выводимой в панели уведомлений

Порядок практического внедрения

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

2. Произвести сравнение и объединение целевой конфигурации с мини-конфигурацией, предлагаемой в данной публикации. Снять флажок с подэлемента "Свойства" корневого дескриптора конфигурации, но оставить флажки на всех добавляемых объектах. Сохранить и применить изменения.

3. Настроить модуль так же, как было описано с пункта 2 предыдущего подраздела "Порядок тестирования".

4. Разработать собственный механизм формирования сообщений посредством функций обработки в_ВЭП_Брокер "ОтправитьПисьмо()" или более частной - ОтправитьПечатнуюФормуПоЭлектроннойПочте(). См. комментарии кода к данным функциям. Можно доработать формат имен формируемых промежуточных файлов, если переопределить функцию СформироватьПутьКФайлуСообщения(), чтобы имена файлов содержали префикс не в виде имени пользователя, а например, в виде имени клиентского компьютера, или имени системного пользователя.

Если речь идет о доработке конфигураций "Управление торговлей 10.3", "Комплексная автоматизация 1.1", "Управление производственным предприятием 1.3", то рекомендуется проследовать к следующему разделу.

4.3 Описание доработки типовых конфигураций

4.3.1 Доработка конфигураций УТ 10.3, УПП 1.3, КА 1.1, и других, основанных на данном семействе.

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

1. Следует интегрировать в конфигурацию дополнительные объекты данного решения, и настроить модуль так, как это указано здесь.

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

Типовое окно вывода печатной формы и кнопка отправки электронного сообщения

Интересующая нас кнопка отмечена красной стрелкой. Анализ ее обработчика приводит нас в общий модуль УправлениеОтчетами, в который удобно внести следующее точечное изменение процедуры ОтправитьДокументПоЭлектроннойПочте:

Процедура ОтправитьДокументПоЭлектроннойПочте(Документ, ИмяФайлаВложения = "", ОбъектПечати = Неопределено) Экспорт

	// +stvor перехвачено и заменено для передачи писем на локальные почтовые клиенты
	Если РольДоступна("в_ВЭП_ОтправкаПочты") или ПользователиИнформационнойБазы.ТекущийПользователь().Имя = "" Тогда
		Обработки.в_ВЭП_Брокер.Создать().ОтправитьПечатнуюФормуПоЭлектроннойПочте(Документ, ИмяФайлаВложения, ОбъектПечати);
		Возврат;
	КонецЕсли;	
	// -stvor	

	// далее следует штатный код этой процедуры

Насколько я лично помню, даже в достаточно волатильных конфигурациях УПП 1.3 и КА 1.1, этот модуль не менялся достаточно давно, и вряд ли поменяется теперь, соответственно, обновление конфигурации не будет затруднено. Про УТ 10.3 (которая еще у некоторых вообще 10.2, несмотря на 2018 год) можно вообще не говорить.

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

Суть изменений состоит в том, что если у пользователя доступна роль в_ВЭП_ОтправкаПочты, или пользователь пустой, то сформированный модулем печати табличный документ, ссылка на исходный объект, будут переданы нашему механизму отправки почты, вместо штатного. Если роль недоступна, то будет использован штатный механизм.

3. Всем пользователям, которые эксплуатируют данный механизм, следует включить роль в_ВЭП_ОтправкаПочты - непосредственно, либо через профиль, если профили полномочий используются в вашей ИБ.

4. Предполагая, что порядок внедрения, описанный ранее, пройден успешно, следует вывести на экран какую-либо печатную форму, после чего нажать кнопку, отмеченную красной стрелкой на рисунке выше. В почтовом клиенте незамедлительно откроется окно интерактивного редактирования нового сообщения, в которое будет уже вложен файл с печатной формой.

Это означает, что цель достигнута.

4.3.2 Доработка конфигурации "БП 2.0", и других на ее основе.

В отличие от вышеописанных конфигураций, в "Бухгалтерии предприятия 2.0" отсутствует модуль CRM (если его так можно назвать) и встроенный почтовый клиент. Соответственно, и кнопки отправки по электронной почте тоже нет. Что не мешает ее туда быстро прикрутить.

1. Следует интегрировать в конфигурацию дополнительные объекты данного решения, и настроить модуль так, как это указано здесь.

2. В панель инструментов общей формы "ФормаПечати" следует добавить кнопку "Отправить по электронной почте", оформив ее на свое усмотрение.

Пример формы печати в БП 2.0

Создать функцию-обработчик этой кнопки, и написать туда следующий код:

	Если РольДоступна("в_ВЭП_ОтправкаПочты") или ПользователиИнформационнойБазы.ТекущийПользователь().Имя = "" Тогда
		Обработки.в_ВЭП_Брокер.Создать().ОтправитьПечатнуюФормуПоЭлектроннойПочте(ЭлементыФормы.ПолеДокумента, Заголовок, Документ);
		Возврат;
	КонецЕсли;	

3. Всем пользователям, которые эксплуатируют данный механизм, следует включить роль в_ВЭП_ОтправкаПочты.

4. Предполагая, что порядок внедрения, описанный ранее, пройден успешно, следует вывести на экран какую-либо печатную форму, после чего нажать кнопку, которую мы сами создали в пункте 2. В почтовом клиенте незамедлительно откроется окно интерактивного редактирования нового сообщения, в которое будет уже вложен файл с печатной формой.

Это означает, что цель достигнута.

4.3.3 Нюансы

К сожалению, штатный механизм печати предоставляет для формирования почтового сообщения лишь ограниченное количество параметров - табличный документ, имя файла вложения (по факту - синоним метаданных), и ссылку на объект (справочник, документ), из которого вызвана печатная форма. Поэтому, код формирования сообщения "не понимает" о чем именно оно. Это приводит к тому, например, что вложение печатной формы счета из документа "Заказ покупателя" называется именем "Заказ покупателя №1 от 01.01.2018.pdf", и тема у письма такая же, а тело пустое, что не совсем соответствует содержимому: ведь предполагается именно счет на оплату. На доведение сообщения до кондиции пользователю потребуется время, что, при достаточной частоте повторения, снижает ценность автоматизации.

Если конечных пользователей не устраивает формат генерируемого сообщения, имя файла-вложения, то необходимо поправить функцию ОтправитьПечатнуюФормуПоЭлектроннойПочте обработки в_ВЭП_Брокер, в коде которой комментариями указаны точки расширения. Функции, возможно, придется "заниматься телепатией", и определять, как конечный пользователь хотел бы видеть письмо, исходя из метаданных объекта и содержимого печатной формы.  Например, что-то вроде:

///... в функции ОтправитьПечатнуюФормуПоЭлектроннойПочте

ЭтоСчет = Ложь;

// Это счет, если из документа "Счет".
Если ОбъектПечати.Метаданные.Имя = "СчетНаОплатуПокупателя" Тогда
  ЭтоСчет = Истина;
КонецЕсли;

// Это счет, если из документа "Заказ покупателя" а печатная форма содержит текст "Счет на оплату"
Если ОбъектПечати.Метаданные.Имя = "ЗаказПокупателя" и ТабДокумент.НайтиЗначение("Счет на оплату") <> Неопределено Тогда
  ЭтоСчет = Истина;
КонецЕсли;

Если ЭтоСчет Тогда
   // Если у нас счет, то порядок формирования имени вложения, темы и тела - особый.
   ИмяФайла = "Счет на оплату покупателя".... // тут приписать номер и дату
   Тема = "Счет на оплату...";
   Тело = "Уважаемый клиент! 
|Направляем вам счет на оплату за "+НРег(ОбъектПечати.ДоговорКонтрагента.ВидВзаиморасчетов);

//...

(Это очень грубое решение экспромтом, представлено как пример, и к тому же содержит уместные для ситуации костыли, поэтому прошу не воспринимать слишком близко к сердцу, и полагать, что я всегда пишу код именно так)

Либо, необходимо разрабатывать свою внешнюю печатную форму, которая будет содержать в себе полноценный шаблон письма, непосредственно вызывать более гибкую функцию обработки в_ВЭП_Брокер "ОтправитьПисьмо()", передав ей тему, текст сообщения, отправителей, вложения и др.

4.4 Формат промежуточных файлов

Промежуточные файлы, содержащие почтовое сообщение, формируются в формате XML, описание диалекта которого представлено далее. XML-файл должен обязательно иметь кодировку UTF-8. Файл может начинаться с трехбайтовой мигнатуры BOM, или без нее. Все имена элементов и атрибутов регистрозависимы.

В одном файле должно находиться только одно сообщение.

Корневым элементом должен быть <message>. Внутри корневого элемента могут находиться следующие элементы:

  • <subject>тема сообщения</subject>, причем такой элемент может быть только один, или не быть вообще.
  • <recipient>получатель</recipient>, причем таких элементов может быть один, несколько, или не быть вообще. Содержимое должно быть оформлено в формате, принятым для поля "Кому" почтовых клиентов, т.е. либо содержать только электронный адрес, либо имя получателя, и его электронный адрес, взятый в треугольные скобки, например "Иванов Иван <ivanov@gdeto.ru>". Разумеется, треугольные скобки в реальном XML должны быть заменены на escape-последовательности &gt; и &lt;
  • <copyto>получатель копии</copyto>, аналогично recipient.
  • <body>тело сообщения</body>, причем такой элемент может быть только один, или не быть вообще. Тело сообщения должно находиться в конструкции CDATA.
  • <attachment filename="имя файла без пути">содержимое</attachment>, причем таких элементов может быть один, несколько, или не быть вообще (для каждого вложения). Содержимое представляет собой неупакованные байты файла, закодированные в формате BASE64 и взятые в конструкцию CDATA. Имя файла должно быть оформлено по правилам, принятым для ОС Windows, т.е. файл с таким именем должно быть возможно создать.

Пример файла представлен ниже.

<?xml version="1.0" encoding="UTF-8"?>
<message>
	<subject>Счет на оплату покупателю № 2468 от 31 августа 2018</subject>
	<recipient>Иван Иванов &lt;ivanov@potrooo.ru&gt;</recipient>
	<recipient>ООО &quot;Потребитель&quot; &lt;info@potrooo.ru&gt;</recipient>
	<body>
		<![CDATA[Здравствуйте!
Направляем Вам очередной счет на оплату за услуги. Просим соблюдать сроки.
Заранее спасибо.
--
С уважением,
ООО "Услуги"
]]></body>
	<attachment filename="Счет на оплату покупателю от 31.08.2018 №2468.pdf">
		<![CDATA[JVBERi0xLjcKJeLjz9MKMSAwIG9iago8PAovRmlsdGVyIC9GbGF0ZURlY29kZQov
TGVuZ3RoIDIgMCBSCi9MZW5ndGgxIDI5NzYwCi9MZW5ndGgyIDAKL0xlbmd0aDMg
MAo+PgpzdHJlYW0KeJztvXlcVEe2OF5Vd7+93V5outn6tg0N2iIIKKBELoKoISqu
... контент пропущен ...
YzUxYjY3ZDA1ZTRmZjk3YTA5Zj4gPDMxOWQ1ODVmODQyMjRjNTFiNjdkMDVlNGZm
OTdhMDlmPiBdCj4+CnN0YXJ0eHJlZgo4NjY0NwolJUVPRgo=]]></attachment>
</message>

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

Если какой-либо элемент не указан, соответствующая часть конечного сообщения не будет заполнена. В минимальном же варианте, в файле может содержаться только закрытый корневой элемент <message/>: из такого файла брокер создаст пустое письмо.

Файлы указанного формата могут создаваться, разумеется, не только 1С предприятием, но и любыми другими программами. Развернутый брокер будет обрабатывать любые файлы, имя которых соответствует настроенной маске.

Заключение

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

Я поставил минимальную сумму sm за конфигурацию (не разобрался пока, как сделать файл бесплатным), чтобы можно было оценить объем и целесообразность доработок. Использование программы "Почтовый брокер" бесплатно для физических и юридических лиц (о чем указано в меню "О программе"), не считая цены в sm, которую требуется внести для скачивания с сайта.

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

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

3

Скачать файлы

Наименование Файл Версия Размер
Почтовый брокер
.zip 737,97Kb
20.09.18
2
.zip 1.0 737,97Kb 2 Скачать
Мини-конфигурация для тестирования и доработки типовых конфигураций
.zip 13,92Kb
20.09.18
2
.zip 13,92Kb 2 Скачать

См. также

Избранное Подписка Сортировка: Древо
В этой теме еще нет сообщений.
Оставьте свое сообщение