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