• Модуль: mail
  • Путь к файлу: ~/bitrix/modules/mail/lib/user.php
  • Класс: BitrixMailUser
  • Вызов: User::onEmailReceived
static function onEmailReceived($to, $message, $recipient, $userRelation, &$error)
{
	$type  = $recipient['type'];
	$token = $recipient['token'];

	$message['secret'] = $token;

	switch ($type)
	{
		case 'rpl':
			$content = Message::parseReply($message);
			break;
		case 'fwd':
			$content = Message::parseForward($message);
			break;
	}

	if (empty($content) && empty($message['files']))
	{
		$error = sprintf('Empty message (rcpt: %s)', $to);
		return false;
	}

	$attachments = array_filter(
		array_combine(
			array_column((array) $message['files'], 'name'),
			array_column((array) $message['files'], 'tmp_name')
		)
	);

	$addResult = UserMessageTable::add(array(
		'TYPE' => $type,
		'SITE_ID' => $userRelation['SITE_ID'],
		'ENTITY_TYPE' => $userRelation['ENTITY_TYPE'],
		'ENTITY_ID' => $userRelation['ENTITY_ID'],
		'USER_ID' => $userRelation['USER_ID'],
		'SUBJECT' => $message['subject'],
		'CONTENT' => $content,
		'ATTACHMENTS' => serialize($attachments),
	));

	if ($addResult->isSuccess())
	{
		CAgent::addAgent(
			"\Bitrix\Mail\User::sendEventAgent(".$addResult->getId().");",
			"mail", //module
			"N", //period
			10 //interval
		);
		return true;
	}

	return false;
}