Настроить, чтобы скрипт отправлял письмо со вложением xls файла

500 руб. за проект
15 августа 2024, 12:28 • 7 откликов • 67 просмотров
Нужно настроить, чтобы этот скрипт отправлял письмо со вложением xls файла (сам он формируется в папке нормально), но не отправляется через событие

<?php
if (PHP_SAPI !== 'cli') die('console mode only');

$DOCUMENT_ROOT = str_replace('/scripts/exportlinkoml.php','',__FILE__);
if(empty($_SERVER["DOCUMENT_ROOT"])) $_SERVER["DOCUMENT_ROOT"] = $DOCUMENT_ROOT;
require($DOCUMENT_ROOT."/bitrix/modules/main/include/prolog_before.php");
define("NO_KEEP_STATISTIC", true);
define("NOT_CHECK_PERMISSIONS", true);
set_time_limit(0);
ini_set('max_execution_time', '3600');
ini_set('memory_limit', '512M');

\Bitrix\Main\Loader::includeModule('catalog');

$iblockIds = [48, 49];
$elements = \Bitrix\Catalog\ProductTable::getList([
'select' => ['ELEMENT_ID' => 'IBLOCK_ELEMENT.ID', 'ELEMENT_NAME' => 'IBLOCK_ELEMENT.NAME', 'QUANTITY'],
'filter' => ['IBLOCK_ELEMENT.IBLOCK_ID' => $iblockIds, '>QUANTITY' => 0]
])->fetchAll();

require 'vendor/autoload.php';

use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Writer\Xls;

// Создаем новый объект Spreadsheet
$spreadsheet = new Spreadsheet();
$sheet = $spreadsheet->getActiveSheet();

// Устанавливаем заголовки столбцов
$sheet->setCellValue('A1', 'ID');
$sheet->setCellValue('B1', 'Name');
$sheet->setCellValue('C1', 'Quantity');

// Заполняем данные
$row = 2;
foreach ($elements as $element) {
$sheet->setCellValue('A' . $row, $element['ELEMENT_ID']);
$sheet->setCellValue('B' . $row, $element['ELEMENT_NAME']);
$sheet->setCellValue('C' . $row, $element['QUANTITY']);
$row++;
}

// Сохраняем файл в формате Excel в папке /scripts/
$filename = $DOCUMENT_ROOT . '/scripts/export.xls';
$writer = new Xls($spreadsheet);
$writer->save($filename);

// Проверяем, что файл существует и доступен для чтения
if (file_exists($filename) && is_readable($filename)) {
echo "File exists and is readable: $filename\n";

// Отправляем файл по email
$arEventFields = array(
"EMAIL_TO" => "майл",
"SUBJECT" => "Exported Data",
"MESSAGE" => "Письмо."
);

CEvent::SendImmediate("EXPORTLIN", Array("s1"), $arEventFields, "N", "", array($filename));
} else {
echo "File does not exist or is not readable: $filename\n";
}

// Удаление временного файла убрано
?>