Битрикс. Переадресация писем с / без вложений с ящика info на ящики сотрудников

На безупречность схемы не претендую, но знаю как ее можно сделать лучше. Итак, сама схема:

Как это все было реализовано

  • К домену была прикреплена почта от Яндекса
  • Битрикс настроен на то, чтобы заходить в почтовые ящики сотрудников и в общий ящик, брать новые письма и заносить себе в систему
  • Письма приходят на info@domain.ru, после этого пересылаются на bit@domain.ru
  • На крон вешается скрипт, который каждую минуту синхронизирует ящики сотрудников с агентами битрикса, для того чтобы письма попали в битрикс, иначе агенты слетают после синхронизации ящиков
  • В правила почты добавляем действие на прием и обработку писем для ящика bit@domain.ru. Поскольку битрикс для системных ящиков мне в 2016 году не давал добавить действие, я залезал в таблицу b_mail_filter и искал там свое правило для системного ящика, и вставлял код:
  • require_once(‘/home/bitrix/www/.../check_emails.php’);
    check_mailbox_array($arMessageFields);
    
  • В самом обработчике мною заложен был примерно такой алгоритм:
    • check_mailbox_array - принимает массив полей письма, который взял Битрикс после занесения письма с ящика
    • Брал поля - заголовки, от кого, кому, тема, полный текст всего письма
    • Далее чистый парсинг всего mime, поскольку битрикс не заносил в массив отдельно заголовки от сообщения
    • В результате чего отделяются заголовки сообщения от сообщения, и получаем полностью то, что пришло от адресата с якорями на вложения и текстом. Вложения все будут на месте. Таким образом любое письмо, с/без вложения или с/без верстки (например открытки) или обычный текст, мы с можем разослать без изменения из скрипта
    • Далее этому скрипту нужно разрешить подключаться к Битриксу и вынимать оттуда данные из CRM по компаниям и сотрудникам:
    • Цикл по компаниям
      • Цикл по контактной информации, ищем все адреса почт, если они найдены, то запоминаем их
      • Цикл по контактам, берем ответственного, через его ID узнаем его почту, запоминаем
      • Если отправитель письма содержится в CRM, то шлем ответственному, иначе шлем на общий ящик, который сам сделает рассылку

Комментарии (0)

Написать комментарий