Bitrix24: автоматическое создание задачи из электронной почты

Bitrix24: автоматическое создание задачи из электронной почты

Условия задачи: Есть служебный ящик. Создаем письмо на два адреса – служебный ящик и (копия) на ящик сотрудника портала. Можно наоборот: письмо - сотруднику, копия - на служебный ящик.

Задача: при получении письма создать задачу сотруднику, указанному в адресе "получатель".

Постановщик - сотрудник, указанный в адресе "отправитель"

Реализация:

1. Создаем почтовый ящик на внешнем почтовом сервере.

2. Создаем служебный ящик в портале:

step1.JPG

  • "Рабочий стол - Сервисы - Почта - Почтовые ящики"
  • в ячейку "название" пишем произвольное название служебного ящика.
  • в графе "тип" указываем "внешний POP3 сервер"
  • в графе "почтовый сервер/порт" указываем адрес почтового сервера. В нашем случае - pop.gmail.com
  • ставим флажок "использовать безопасное соединение".
  • порт - 995 (установится автоматически)
  • в графе "имя входа" - имя реального аккаунта, соответствующего почтовому ящику на внешнем сервере.
  • В графе "пароль" - пароль для внешнего п/я
  • в графе "проверять с периодом" ставим периодичность (в минутах), с которой содержимое ящика будет проверяться автоматически, или 0 - для ручной проверки

3. Создаем правило обработки:

  • "Рабочий стол - Сервисы - Почта - Правила - Добавить правило - ручная настройка"
  • На вкладке "параметры" указываем:
  • имя ящика (которое было в графе "название" при создании ящика)
  • название и описание правила
  • "применять при событиях" - ставим флажок "При получении почты"

step2.JPG

На вкладке "действия" в окне "Действия на PHP скрипте" вписываем следующий код:

if (CModule::IncludeModule("tasks")) {       
$from = CMailUtil::ExtractMailAddress($arMessageFields['FIELD_FROM']);    
$rsUser = CUser::GetList(($by="ID"), ($order="desc"), array("email"=>$from));    
if ($oUser = $rsUser->Fetch())       
$id_created = $oUser["ID"];        
$arr_to = CMailUtil::ExtractAllMailAddresses($arMessageFields["FIELD_TO"].",".$arMessageFields["FIELD_CC"].
",".$arMessageFields["FIELD_BCC"]);    
foreach ($arr_to as $to)    {
    if (empty($to))       continue;    
    $rsUser = CUser::GetList(($by="ID"), ($order="desc"), array("email"=>$to));    
    if ($oUser = $rsUser->Fetch())       
      $arr_responsible[] = $oUser["ID"];    
}                 
$arFields = Array(  
"TITLE" => $arMessageFields['SUBJECT'],
"DESCRIPTION" => TxtToHTML($arMessageFields['BODY']),
"RESPONSIBLE_ID" => $arr_responsible[0],
"STATUS"=>2,
"CREATED_BY" => $id_created  );        
$obTask = new CTasks;    
 $ID = $obTask->Add($arFields);    
$arr_accomp = array_splice($arr_responsible, 1, (count($arr_responsible)-1));    
CTasks::AddAccomplices($ID, $arr_accomp);        
}

Доступны 2 версии решения

Похожие записи в блоге

Все статьи