Проверка доступности конечной точки BPMSoft для синхронизации почты

Данный материал предназначен для продвинутых пользователей. Если у вас есть вопросы по применению, обратитесь в Техническую поддержку BPMSoft.

Для проверки состояния почтового механизма в BPMSoft можно отправить запрос к конечной точке POST /ServiceModel/ExchangeListenerService.svc/ProcessFullEmail. Этот запрос создает записи объектов системы, представляющие данные о загруженных письмах. Успешная отправка запроса подтверждает готовность BPMSoft к синхронизации электронной почты при успешной диагностике почтового механизма.

Прямой запрос к конечной точке POST /ServiceModel/ExchangeListenerService.svc/ProcessFullEmail дает возможность эмулировать целевой процесс загрузки письма. Сервис синхронизации почты при синхронизации отправляет идентичный запрос на загрузку сообщения с бинарными данными о письме (POST /ServiceModel/ExchangeListenerService.svc/ProcessBinarySerializedEmail).

Пример запроса
POST #BPMSoft_URL# HTTP/1.1
Host: #BPMSoft_URN#
Content-Type: application/json
Accept: */*
 
{
  "Emails": [
    {
      "Subject": "TestMessageSubject",
      "Body": "TestMessageBody",
      "Sender": #Sender_Email_Address#,
      "Recepients": [ #Recipient_Email_Address# ],
      "CopyRecepients": [],
      "BlindCopyRecepients": [],
      "Headers": [],
      "Importance": "2",
      "Attachments": [],
      "SendDateTimeStamp": #SendDateTimeStamp_Value#,
      "MessageId": #MessageId_Value#
    }
  ],
  "SubscriptionInfo": {
    "MailboxId": #Target_Mailbox_Id#,
    "SysAdminUnit": #Mailbox_Owner#,
    "Id": #Target_Mailbox_Id#
  }
}

Где:

  • #BPMSoft_URL# — адрес развертывания целевого инстанса BPMSoft;
  • #BPMSoft_URN# — адрес конечной точки:
    • для .NET Framework: /0/ServiceModel/ExchangeListenerService.svc/ProcessFullEmail
    • для .NET Core/.NET 8: /ServiceModel/ExchangeListenerService.svc/ProcessFullEmail
  • #Sender_Email_Address# — значение адреса электронной почты отправителя сообщения электронной почты;
  • #Recipient_Email_Address# — значение адреса электронной почты получателя сообщения электронной почты;
  • #SendDateTimeStamp_Value# — значение числа тактов, которое представляет определенную дату и время (например, количество тактов 638910720000000000 эквивалентно дате и времени "18/08/2025 00:00:00");
  • #MessageId_Value# — значение почтового заголовка "Message-ID";
  • #Target_Mailbox_Id# — идентификатор почтового ящика в BPMSoft (таблица "MailboxSyncSettings", столбец "Id"), в отношении которого осуществляется загрузка письма;
  • #Mailbox_Owner# — наименование учетной записи, являющейся владельцем почтового ящика в системе (таблица "SysAdminUnit", столбец "Name").

Текстовые значения должны быть указаны в кавычках. Например: "Sender": "test@mail.ru".

Сценарии применения

Проверить сетевую доступность после настройки сервиса

После настройки Сервиса синхронизации почты выполните запрос из среды его развертывания, чтобы проверить сетевую доступность по пути [Exchange Listener → BPMSoft]. Это поможет заранее выявить проблемы на сетевом уровне, которые могут проявляться в логах почтового сервиса следующими ошибками:

  • Mailbox*#mailbox_name#: error sending emails ['#message_unique_identifier#' in folder#target_folder_name#] to #BPMSoft_Url#**/ServiceModel/ExchangeListenerService.svc/NewEmail. System.Threading.Tasks.TaskCanceledException: The operation was canceled. at System.Net.Http.ConnectHelper.EstablishSslConnectionAsyncCore(Stream stream, SslClientAuthenticationOptions sslOptions, CancellationToken cancellationToken) ...*
  • Mailbox*#mailbox_name#: error sending emails ['#message_unique_identifier#' in folder#target_folder_name#] to #BPMSoft_Url#**/ServiceModel/ExchangeListenerService.svc/NewEmail. System.Net.Http.HttpRequestException: Connection refused ---> System.Net.Sockets.SocketException (111): Connection refused ...*

Ошибка 404 при синхронизации почтовых сообщений на уровне компонента exchangelistener-worker

Процесс синхронизации почтовых сообщений на уровне компонента exchangelistener-worker может завершиться ошибкой с кодом 404, если выполнить запрос (POST /ServiceModel/ExchangeListenerService.svc/ProcessBinarySerializedEmail) по пути Exchange Listener → BPMSoft:

Mailbox*#mailbox_name#can't send events ['#message_unique_identifier#' in folder#target_folder_name#] to#BPMSoft_Url#**/ServiceModel/ExchangeListenerService.svc/NewEmail. System.Exception: Code 'NotFound', Reason 'Not Found', Content 'System.Net.Http.HttpConnectionResponseContent'.*

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

Пример: В логах балансировщика зафиксирована ошибка:

"GET /ServiceModel/ExchangeListenerService.svc/ProcessBinarySerializedEmail HTTP/1.1" 404 0 "-" "curl/7.58.0"

При этом в целевом логе видно, что был выполнен GET-запрос вместо ожидаемого POST.

Ошибка 400 при синхронизации почтовых сообщений на уровне компонента exchangelistener-worker

Процесс синхронизации почтовых сообщений на уровне компонента exchangelistener-worker может завершиться ошибкой с кодом 400, если выполнить запрос (POST /ServiceModel/ExchangeListenerService.svc/ProcessBinarySerializedEmail) по пути Exchange Listener → BPMSoft:

Mailbox*#mailbox_name#can't send events ['#message_unique_identifier#' in folder #target_folder_name#] to #BPMSoft_Url#**/ServiceModel/ExchangeListenerService.svc/NewEmail. System.Exception: Code 'BadRequest', Reason 'Bad Request', Content 'System.Net.Http.HttpConnectionResponseContent'.*

Запрос извне почтового сервиса также поможет выявить проблему. Если запрос завершается с указанной ошибкой, убедитесь, что учетная запись, сохраненная в Exchange Listener (параметр "SubscriptionInfo.SysAdminUnit"), присутствует в целевом экземпляре BPMSoft.

Проверка значения "$null" в параметре «Message-ID»

В системе есть условие: «Каждое входящее письмо должно содержать уникальное значение в параметре «Message-ID».». Если со стороны почтового сервера приходит значение "$null" (эквивалент отсутствия значения в заголовке), письма теряются. Это можно проверить, выполнив запрос и указав в параметре Emails.MessageId значение "$null". В результате система создаст одно сообщение с этим значением, а все последующие будут исключены из обработки.

Рекомендуем изучить

Общие принципы диагностики проблем эксплуатации микросервисов

Материал был полезен для вас?
Вебинар: 22 апреля в 11:00
Приглашаем вас на вебинар «BPMSoft – от выбора к реальным процессам», где покажем, как компании на практике сокращают time-to-market и масштабируют бизнес с помощью решений BPMSoft.
Регистрация на мероприятие
Готовы сделать выбор CRM?
Оставьте заявку, и наши эксперты бесплатно проконсультируют вас, подберут подходящую конфигурацию и рассчитают стоимость проекта.
Готовы сделать выбор CRM? (детальная)
Оставьте заявку, и наши эксперты бесплатно проконсультируют вас, подберут подходящую конфигурацию и рассчитают стоимость проекта.
Готовы сделать выбор CRM?
Оставьте заявку, и наши эксперты бесплатно проконсультируют вас, подберут подходящую конфигурацию и рассчитают стоимость проекта.
Готовы сделать выбор CRM? (детальная)
Оставьте заявку, и наши эксперты бесплатно проконсультируют вас, подберут подходящую конфигурацию и рассчитают стоимость проекта.
Оставить заявку
Оставьте свои контакты и наш менеджер свяжется с Вами в ближайшее время.
Демонстрационная версия BPMSoft
Заполните заявку для получения бесплатного доступа к демонстрационному стенду на 14 дней.
Типовое внедрение
Внедрите BPMSoft CRM в свою компанию всего за 8 рабочих дней по фиксированной цене! Заполните заявку для уточнения условий.
Заказать презентацию
Наш менеджер свяжется с Вами в ближайшее время.
Рассчитать стоимость
Задать вопрос
Карта сценариев использования ИИ для управления маркетингом, продажами и сервисом
Заполните форму и мы отправим исследование на E-mail
Присоединяйтесь к партнерской сети BPMSoft
Оставьте свои контакты и наш менеджер свяжется с Вами в ближайшее время
Тип партнерства*
Управление полным жизненным циклом клиента: от генерации лидов и продаж до внедрения, поддержки и продления подписки.
Разработка собственного Приложения – производного программного обеспечения, созданного на платформе BPMSoft (Базовое ПО).
Есть вопросы?
Не нашли для себя подходящую вакансию, или остались вопросы?
*
Есть вопросы?
Не нашли для себя подходящую вакансию, или остались вопросы?
*
Стать образовательным партнёром
Оставьте свои контакты и наш менеджер свяжется с Вами в ближайшее время.
Заявка на консультацию
Оставьте свои контакты и наш менеджер свяжется с Вами в ближайшее время.
Подписка
Спасибо!
Ваша заявка принята.
Наш сотрудник свяжется с вами в течение 1-2 рабочих дней.
Внимание!
Обнаружена ошибка.
Проверьте вашу почту
Для завершения подписки перейдите по ссылке в письме, которое мы только что отправили. Если письма нет во «Входящих», проверьте папку «Спам».
Telegram Подписаться
Уважаемые клиенты! Предупреждаем о случаях недобросовестной конкуренции и мошенничестве в сети Интернет.
Подробнее