- Модуль: mail
- Путь к файлу: ~/bitrix/modules/mail/lib/integration/intranet/secretary.php
- Класс: BitrixMailIntegrationIntranetSecretary
- Вызов: Secretary::getMessageUrl
static function getMessageUrl(int $messageId, string $entityType, int $entityId, ?int $userId = null): ?string
{
$message = MailMessageTable::getList([
'select' => [
'*',
'MAILBOX_EMAIL' => 'MAILBOX.EMAIL',
'MAILBOX_NAME' => 'MAILBOX.NAME',
'MAILBOX_LOGIN' => 'MAILBOX.LOGIN',
],
'filter' => [
'=ID' => $messageId,
],
])->fetch();
if (!$message)
{
return null;
}
$filter = [
'=MAILBOX_ID' => $message['MAILBOX_ID'],
'=MESSAGE_ID' => $message['ID'],
// '=ENTITY_UF_ID' => $userField['ID'],
];
if ($entityType)
{
$filter['=ENTITY_TYPE'] = $entityType;
$filter['=ENTITY_ID'] = $entityId;
}
$access = MessageAccessTable::getList([
'filter' => $filter,
'limit' => 1,
])->fetch();
if (!$access)
{
return null;
}
BitrixMailHelperMessage::prepare($message);
$signer = new BitrixMainSecuritySignSigner(new BitrixMainSecuritySignHmacAlgorithm('md5'));
$message['__href'] = CHTTP::urlAddParams(
$message['__href'],
array(
'mail_uf_message_token' => sprintf(
'%s:%s',
$access['TOKEN'],
$signer->getSignature($access['SECRET'], Message::getSaltByEntityType($entityType, $entityId, $userId))
),
),
array(
'encode' => true,
)
);
return $message['__href'];
}