yous
@yous

Bitrix CEvent::Send &CFile::MakeFileArray в письме 2 одинаковых файла?

Всем привет, вопрос такой, почему в письме 2 одинаковых аттача?

$file = CFile::MakeFileArray($_SERVER["DOCUMENT_ROOT"]."/temp/".$MGR_ID.'_'.date("dmYHi").'.xlsx');

     $arEventField = array(  
          "EMAIL_TO" => $USER->GetEmail(),
          "USER_NAME" => $USER->GetFullName(),
          "FILE" => $file
        );
        //var_dump($file);

        if(CEvent::Send("MGR_INFORMER", 's1', $arEventField,'Y','',$file)){  // array($file) если указать файл в массиве, то вообще файл не прикрепляется...
        	@unlink($_SERVER["DOCUMENT_ROOT"]."/temp/".$MGR_ID.'_'.date("dmYHi").'.xlsx');
        }


в $file массив из

array(4) {
  ["name"]=>
  string(19) "1_250720190933.xlsx"
  ["size"]=>
  int(32177)
  ["tmp_name"]=>
  string(70) "/var/www/vhosts/site.ru/httpdocs/temp/1_250720190933.xlsx"
  ["type"]=>
  string(65) "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
}
  • Вопрос задан
  • 36 просмотров
Решения вопроса 1
gromdron
@gromdron
Bitrix developer
1) В $arEventField не нужно указывать ключ FILE, он сам будет задан из 6 параметра метода CEvent::Send
2) \CFile::MakeFileArray вовсе не нужно делать. На последнем битриксе это делают за вас.

Т.е. в вашем случае код должен выглядеть как-то так:
$fileName = $_SERVER["DOCUMENT_ROOT"]."/temp/".$MGR_ID.'_'.date("dmYHi").'.xlsx';

$files = [
	$fileName
];

$arEventField = [
	"EMAIL_TO"  => $USER->GetEmail(),
	"USER_NAME" => $USER->GetFullName(),
];

if ( \CEvent::Send("MGR_INFORMER", "s1", $arEventField, "Y", '', $files ) )
{
	@unlink($fileName);
}


Если после проделанного файлов все же прикрепляется 2, то необходимо:
1) Проверить шаблон MGR_INFORMER возможно в самом шаблоне прописана вставка файла. Если файл вставлен в тело письма, то он может быть продублирован 2 раза.
2) Проверить события OnBeforeEventAdd модуля main. Возможно там есть дублирование файла.
3) Проверить функцию custom_mail (если таковая существует). Возможно дополнительно работа с файлами находится там.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
yous
@yous Автор вопроса
вопрос решился так $file['tmp_name'] ...

if(CEvent::Send("MGR_INFORMER", 's1', $arEventField,'Y','',[$file['tmp_name']])){
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы