Битрикс, задача из письма (обработка личных почтовых ящиков)

Ранее в статье БИТРИКС, ЗАДАЧА НА ОСНОВАНИИ ПИСЬМА. ПРИКРЕПЛЯЕМ К ЗАДАЧЕ ПИСЬМО был вопрос, как обработать письмо в личном ящике.

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

Итак, в init.php регистрируем на событие onMailMessageNew функцию onMailMessageToTask. Она передает массив письма как и в системном ящике, но с MAILBOX_ID в котором можно проверить ID ящика. Если надо проверять можно по email получателя.

Важно! Редактирование файла init.php лучше делать когда у вас есть прямой доступ к файлам, в противном случае может пропасть доступ к порталу! Код дан для примера, я делают данные доработки в отдельных файлах и подключаю их в init.php.
P.S. если будет время, то может выпущу приложение для коробки.

//регистрируем событие
AddEventHandler("mail", "onMailMessageNew", "onMailMessageToTask");

function onMailMessageToTask($arMessageFields) {
$mailBox = '41'; //ящик с которым работаем

 if($mailBox === $arMessageFields['MAILBOX_ID'])
    {
        if (CModule::IncludeModule("tasks") && CModule::IncludeModule("disk")) {
            $userId = 1; // пользователь в диске которого будут храниться все файлы
            $responsible_id = 1; //ответственный
            $accomplices = array(531,1); //соисполнители
            $auditors = array(531,1); //наблюдатели
            $date = new DateTime();
            $date->modify('+3 day');
            $deadline = $date->format('d.m.Y');
            $comment = "<b>ЗАДАЧА ИЗ ПИСЬМА (Текстовая версия письма)</b><br>";

            $txt_body = $arMessageFields['BODY'];
            // Удаление лишних переносов строк
            $txt_body = preg_replace("/(\r\n|\r|\n){2,}/", "\n", $txt_body);

            //создаю новую задачу и заполняю нужные для себя поля, потом сохраняю
            $task['TITLE'] = $arMessageFields['SUBJECT'];
            $task['DESCRIPTION'] = $comment . $txt_body;
            $task['RESPONSIBLE_ID'] = $responsible_id;
            $task['DEADLINE'] = $deadline;
            $task['ACCOMPLICES'] = $accomplices;
            $task['AUDITORS'] = $auditors;
            $task['ALLOW_CHANGE_DEADLINE'] = 'N';
            $task['TAGS'] = array("Access");
            $task['ADD_IN_REPORT'] = 'Y';
            $task['TASK_CONTROL'] = 'Y';
            $task['UF_MAIL_MESSAGE'] = $arMessageFields['ID'];
            $rsAdd = CTaskItem::add($task, $userId);

        }
    }
}
Оцените документ
Обновлено 03.02.2025

Один комментарий на ««Битрикс, задача из письма (обработка личных почтовых ящиков)»»

  1. Аватар пользователя Владимир

    Спрашивайте если есть вопросы, статья написана на скорую руку как помощь в проблеме)

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *