Отправка писем с аттачем в bitrix довольно распространенная задача, например, отсылать пользователям договора, анкеты, выписки и другие файлы. В интернете довольно много различных способов решения задачи, например, использование сторонних библиотек или же собственных функций по отправке, т.е. не используя API Битрикса. Но в данном совете, мы рассмотрим самый простой способ отправки таких писем, используя API, т.е. все стандартизовано и хорошо :)
Поставим задачу: необходимо сгенерированный PDF файл отправить на мыло пользователю, после чего, удалить файл. В данном примере мы не будем рассматривать генерацию PDF, установим только, что объект $oPdf
имеет метод $oPdf->pdf($sPath);
, который сохраняет PDF файл по заданному пути и имени, через переменную $sPath
. Итак решение:
$sPath = $_SERVER['DOCUMENT_ROOT'] . '/upload/tmp/test.pdf'; if ($oPdf->pdf($sPath) && file_exists($sPath)) { $iFileId = \CFile::SaveFile(\CFile::MakeFileArray($sPath), "main"); \CEvent::SendImmediate( 'TEMPLATE_EMAIL', SITE_ID, ['EMAIL_TO' => 'user@email.ru'], 'Y', '', [$iFileId] ); unlink($sPath); if ($iFileId) { \CFile::Delete($iFileId); } }
Где:
Так как перед тем как отправить файл, нам потребовалось его создать в папке /upload/tmp/
, то и после отправки необходимо удалить файл как из базы, так и с диска. Надеемся пример понятен и позволит не тратить время на решение стандартных задач. Отличного кода!