файл из письма получаю сохраняю без ошибок, пустой смарт процесс тоже создается. А как пытаюсь прикрепить файл так ниче не работает
<?php
use Bitrix\Main\Diag\Debug;
use Bitrix\Crm\Service\Container;
use Bitrix\Crm\Service;
use Bitrix\Main\Loader;
CModule::IncludeModule('mail');
CModule::IncludeModule('crm');
CModule::IncludeModule('tasks');
$eventManager = \Bitrix\Main\EventManager::getInstance();
$eventManager->addEventHandler('mail', 'onMailMessageNew', 'onMailMessageNew');
function onMailMessageNew($event)
{
$message = $event->getParameter('message');
$dbr_attach = CMailAttachment::GetList(Array("NAME" => "ASC", "ID" => "ASC"), Array("MESSAGE_ID" => $message['ID']));
while ($dbr_attach_arr = $dbr_attach->GetNext()) {
if ($dbr_attach_arr["FILE_NAME"]=='1.tmp' ||
preg_match_all('/\\.(?:exe|html|phtml|pl|js|htm|py|php|php4|php3|phtml|shtml)$/i', $dbr_attach_arr["FILE_NAME"], $p_matches, PREG_PATTERN_ORDER))
continue;
$attach_id = $dbr_attach_arr["ID"];
$dbr = CMailAttachment::GetByID($attach_id);
if($dbr_arr = $dbr->Fetch())
{
$fname = $_SERVER['DOCUMENT_ROOT']."/upload/from_mail/".$dbr_attach_arr["FILE_NAME"];
$handle = fopen($fname, 'wb');
fwrite($handle, $dbr_arr["FILE_DATA"]);
fclose($handle);
$arFile = CFile::MakeFileArray($fname);
//создаем смарт процесс
$typeid = '182';//Идентификатор смарт-процесса
$userId = 1;
$factory = Service\Container::getInstance()->getFactory($typeid);
$faсtory = Container::getInstance()->getFactory($typeid);
$data = [
'TITLE' => 'работает4',
'ASSIGNED_BY_ID'=>$userId,
//'UF_CRM_2_1699244494567'=>$arFile, //без этой строки смарт процесс создается
'STAGE_ID' => 'DT182_4:NEW',
];
$item = $factory ->createItem($data);
$item->save();
//создаем смарт процесс
Debug::dumpToFile($arFile); //вывод $arFile
// array(4) {
// ["name"]=>
// string(31) "Surface Laptop 2 (Burgundy).jpg"
// ["size"]=>
// int(144516)
// ["tmp_name"]=>
// string(65) "/home/bitrix/www/upload/from_mail/Surface Laptop 2 (Burgundy).jpg"
// ["type"]=>
// string(10) "image/jpeg"
//}
}
}
}
$valueFile = Container::getInstance()->getFileUploader()->saveFileTemporary($field, $arFile); $item->set('field_name', $valueFile);
Обсуждают сегодня