Реализация отправки Email через SendPulse API

Публикация № 1129435

Разработка - Системная интеграция - Email рассылки

Описана реализация отправки Email с использованием API и применением очереди отправки как пример для программистов (вариант компоновка блоков в контексте конкретного сервиса).

Вводные:

1. Нужна рассылка уведомлений клиентам о заказах

2. Конфигурация УТ 11.4

3. Отсутствие умения верстать HTML письма.

4. Сервис отправки выбран потому что у него есть:

4.1 нормальная документация на HTTP API https://sendpulse.com/ru/integrations/api/smtp

4.2 адекватная тех поддержка

4.3 бесплатный пакет (ограничение отправка со списка email, отправка с домена по платным подпискам)

Реализация:

Выбрал вариант реализации в виде расширения в котором:

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

1.1 Настройка доступа на стороне SendPulse

"Необходимые для получения ключа параметры можно найти в настройках аккаунта, во вкладке API."

2. Добавил перечисление ТипыОтправлений и регистр сведений СоответствиеМакетов, для фиксации настроек компоновки для каждого типа отправлений, макеты формируются на стороне сервиса и в них прописываются нужные параметры.

1.2 Настройка макетов на стороне SendPulse

Макеты создаются по документации https://sendpulse.com/ru/knowledge-base/email-service/email-create/create-own-template

Получение ID макета и использование переменных.

ID макета можно получить из адресной строки при редактировании сохраненного макета.

Переменные обозначаются "{{}}".

3. Для хранения очередью добавил перечисление СостояниеОтправлений и Регистр сведений ОчередьОтправкиУведомлений

Формирование очереди:

Доработал процедуру "При записи" в документе "Заказ клиента" и РС "СостоянияЗаказовКлиентов"

 
 Процедура в РС СостоянияЗаказовКлиентов

Реализация обработки изменения заказа зависит от специфики работы компании.

Отправка очереди:

Запросом выбираю все записи с состоянием "создано" и обрабатываю:

 
 Код процедуры отправки

 

Аутентификация на сервере:

Для отправки рабочих сообщений используется Bearer токен. Токен храню в переменной модуля.

 
 Код получения токена
 

Формирование сообщения:

Документация по структуре данных https://sendpulse.com/ru/integrations/api/smtp

 
Код формирования 

В общем формирую соответствие, которое сериализую в JSON и отправляю на сервер. Заполнение отправителя, получателя зависит от конфигурации и специфики работы компании. 

Вложения  реализовываются через Base64 строку.

 
 Код реализации вложения для УТ 11.4

 

Отправка данных:

Сериализую соответствие данных и отправляю POST запросом, проверяю на коды ошибок и по результату делаю запись в очередь отправки.

 
Код реализации отправки данных

 

Протухшие записи:

Бывают ситуации что очередь не отправляется по техническим причинам, а отправлять неактуальные данные не нужно.

Если дата создания записи очереди меньше чем ТекущаяДата() - КоличествоДнейАктуальностиПисьма то помечаю её как ошибочную.

Отладка:

Для отладки использую параметр настройки "Тест" при которой письма отправляются отправителю и выводятся сообщения о ошибках HTTP запросов.

Обработка ошибок:

При ошибках формирования письма и отправки обновляю запись очереди сообщений устанавливая состояние "Ошибка" и записываю в реквизит "СообщениеОбОшибке"

Подрезка очереди:

Использую параметр настроек "КоличествоДнейИстории" и Удаляю все записи с датой создания меньше ТекущаядДата() - КоличествоДнейИстории

 
 Код подрезки

Автоматический запуск:

Реализовано в виде внешней обработки (как формировать регламентные задания кодом не нашел, с обработкой реализуется просто, работает стабильно).

 
 Код модуля обработки

 

Итог:

1. Работающие уведомления по email, которых хватает для базовой работы отдела продаж.

2. Клиент может изменять макеты по своему усмотрению.

3. Добавление новых типов сообщений и формирования параметров под них относительно просто.

4. История отправки хранится в личном кабинете сервиса, разбор ситуации с отсутствием доставки решаем.

 

В реализации использовались наработки из //cat.1module.ru/public/717412/

Благодарю за внимание.

Специальные предложения

Комментарии
Избранное Подписка Сортировка: Древо развёрнутое
Свернуть все
1. volokitinac 09.10.19 10:27 Сейчас в теме
Замер скорости отправки через http и через ИнтернетПочта делали ?
2. malikov_pro 268 09.10.19 13:55 Сейчас в теме
(1) Замеры по скорости не делал. Для текущей инсталляции хватает. Если без вложений запрос маленький и обрабатывается относительно быстро.

Решал вопрос про перенос верстки на сторонний сервис, дополнительно и аналитику получаем по просмотрам сообщений и переходам.

ИнтернетПочта по SMTP отправляет, с ним вариант воспользоваться сервисом шаблонов с него взять верстку скомпоновать локально и отправить по SMTP, но нагрузка на сервер 1С и трафик с него будет больше.
3. spy-83 186 12.10.19 08:59 Сейчас в теме
Здравствуйте
Отличный разбор.

можно глянуть код функции
ОтправитьДанные(СоответствиеДанные, Выборка);



спасибо
4. malikov_pro 268 12.10.19 13:35 Сейчас в теме
(3) Добавил в статью раздел "Отправка данных"
5. spy-83 186 14.10.19 07:15 Сейчас в теме
Оставьте свое сообщение

См. также

Вдохнем вторую жизнь во встроенный почтовый клиент из 1С:Управление торговлей 10.3

Email Управление взаимоотношениями с клиентами (СRM) Управление взаимоотношениями с клиентами (СRM) v8 УТ10 УУ Бесплатно (free)

Хотели было воспользоваться почтовым клиентом из Управление торговлей 10.3, да не тут-то было. К сожалению, фирма "1С" почти совсем ее забросила и если Ваш респондент отправляет Вам письма, содержащие HTML, то Вас ждут матюки... Ну что же, как говорится: "Спасение утопающих - дело рук самих утопающих".

25.12.2018    7702    0    1c.pro.fun    9    

Таблица значений в Таблицу HTML - функция с возможностью настройки цвета шапки, заголовков, выравнивания и размера колонок

Практика программирования Универсальные функции v8 1cv8.cf Бесплатно (free)

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

22.12.2017    23570    0    rpgshnik    22    

Код для кнопки "Отправить почтовым сообщением" любого табличного документа, используя механизмы УТ 11.2

Email Практика программирования v8 УТ11 Бесплатно (free)

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

23.01.2017    11977    0    RockLeeSan    0    

Как отправить по почте НЕтиповой документ, используя стандартные средства БП 3.0

Email Практика программирования v8 БП3.0 Россия Бесплатно (free)

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

08.02.2016    16236    0    config    3    

Алгоритм создания и отправки электронного письма (со вложением) УТ 3.0 для Украины

Практика программирования Email v8 УТ10 Украина Бесплатно (free)

Алгоритм позволит быстро создать письмо с вложением (например, печатная форма Заказа клиента в формате XLS) и отправить его партнеру. Для конфигурации Управление торговлей для Украины 3.0

20.07.2015    22052    0    Bor_ka    5    

Отправка почты с использованием основного почтового клиента ОС (продолжение)

Практика программирования Email v8 КА1 Россия Бесплатно (free)

В публикации описан фрагмент кода, позволяющий отправлять печатные формы с помощью почтового клиента операционной системы. Дальнейшее развитие публикации http://infostart.ru/public/91206/ Добавлено: 1. Поддержка Mozilla Thunderbird. 2. Автоподстановка адресата письма.

27.03.2013    15582    0    d7k    7    

Отправка почты с использованием основного почтового клиента ОС

Универсальные функции Email v8 УТ10 УПП1 Бесплатно (free)

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

21.09.2011    29167    0    Администратор 1С    18    

Отправка e-mail через Microsoft Office Outlook

Практика программирования Email v8 1cv8.cf Россия Бесплатно (free)

Способ обхода повышенной безопасности Microsoft Office Outlook, для программного доступа к функциям работы с почтой. Используется библиотека Outlook Redemption.

02.03.2011    15997    0    ruslanruslan    1    

Почтовая рассылка 1С 8

Управление взаимоотношениями с клиентами (СRM) Email Управление взаимоотношениями с клиентами (СRM) v8 1cv8.cf Бесплатно (free)

Почтовая рассылка 1С 8 Благодаря *.xml вы никогда не теряете базу mail-получателей. Рассылку можно осуществлять как через OutLook так и с обычного бесплатного сервера.

02.02.2010    13763    0    mut_mut    6    

Расчетные листки организации с рассылкой по почте

Зарплата Бухгалтерские Email Зарплата v8 ЗУП2.5 Россия БУ Бесплатно (free)

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

21.10.2009    11323    0    Alltruist    19    

Почтовый клиент УТ и gmail

Администрирование данных 1С Универсальные функции Email v8 Бесплатно (free)

Скрещиваем почтовый клиент Управления торговлей и Google Apps. Натолкнулся на это - http://infostart.ru/public/16429/ - решение, и вспомнил, что делал похожую вещь для MS Exchange. Модификация конфигурации не потребуется.

06.10.2009    101416    0    vabue    48    

Рассылка электронной почты пользователям по категориям

Управление взаимоотношениями с клиентами (СRM) Email Управление взаимоотношениями с клиентами (СRM) v8 УТ10 УПП1 Бесплатно (free)

Обработка позволяет вам выбрать по категориям контрагентов, контактных лиц контрагентов и разослать им электронное сообщение. Удобна для организации маркетинговых рассылок.

04.07.2008    7387    0    nav-it    1