- Модуль: tasks
- Путь к файлу: ~/bitrix/modules/tasks/lib/integration/mail/externaluserprovider.php
- Класс: BitrixTasksIntegrationMailExternalUserProvider
- Вызов: ExternalUserProvider::sendEmail
private function sendEmail(Message $message, string $eventId, string $siteId, string $subjPrefix, string $threadMessageId): void
{
$metadata = $message->getMetaData();
$entityCode = $metadata->getEntityCode();
$entityOperation = $metadata->getEntityOperation();
$task = $metadata->getTask();
$sender = $message->getSender();
$pathToTask = BitrixTasksIntegrationMailTask::getDefaultPublicPath($task->getId());
$authorName = str_replace(['<', '>', '"'], '', BitrixTasksUtilUser::formatName([
'ID' => $sender->getId(),
'NAME' => $sender->getName(),
'LAST_NAME' => $sender->getLastName(),
'SECOND_NAME' => $sender->getSecondName(),
], $siteId));
$receiversData = BitrixTasksIntegrationMailUser::getData([$message->getRecepient()->getId()], $siteId);
if(empty($receiversData))
{
return; // nowhere to send
}
foreach ($receiversData as $userId => $arUser)
{
$email = $arUser['EMAIL'];
$nameFormatted = str_replace(['<', '>', '"'], '', $arUser['NAME_FORMATTED']);
$replyTo = BitrixTasksIntegrationMailTask::getReplyTo(
$userId,
$task->getId(),
$pathToTask,
$siteId
);
if ($replyTo == '')
{
return;
}
$e = [
"=Reply-To" => $authorName.' <'.$replyTo.'>',
"=Message-Id" => $threadMessageId,
"EMAIL_FROM" => $authorName.' <'.BitrixTasksIntegrationMail::getDefaultEmailFrom($siteId).'>',
"EMAIL_TO" => (!empty($nameFormatted) ? ''.$nameFormatted.' <'.$email.'>' : $email),
"TASK_ID" => $task->getId(),
"TASK_COMMENT_ID" => $metadata->getCommentId(),
"TASK_TITLE" => trim($task->getTitle()),
"TASK_PREVIOUS_FIELDS" => BitrixTasksUtilType::serializeArray($metadata->getPreviousFields()),
"RECIPIENT_ID" => $userId,
"USER_ID" => BitrixTasksUtilUser::getAdminId(),
"URL" => $pathToTask,
"SUBJECT" => $subjPrefix . trim($task->getTitle())
];
if (!(EntityCode::CODE_TASK === $entityCode && EntityOperation::ADD === $entityOperation))
{
$e['=In-Reply-To'] = BitrixTasksIntegrationMail::formatThreadId('TASK_'.$task->getId(), $siteId);
}
CEvent::Send(
$eventId,
$siteId,
$e
);
}
}