• Модуль: main
  • Путь к файлу: ~/bitrix/modules/main/lib/mail/sender.php
  • Класс: BitrixMainMailSender
  • Вызов: Sender::getCustomSmtp
static function getCustomSmtp($email)
{
	static $smtp = array();

	if (!isset($smtp[$email]))
	{
		$config = false;

		$cache = new CPHPCache();

		if ($cache->initCache(30*24*3600, $email, '/main/mail/smtp'))
		{
			$config = $cache->getVars();
		}
		else
		{
			$res = InternalSenderTable::getList(array(
				'filter' => array(
					'IS_CONFIRMED' => true,
					'=EMAIL' => $email,
				),
				'order' => array(
					'ID' => 'DESC',
				),
			));
			while ($item = $res->fetch())
			{
				if (!empty($item['OPTIONS']['smtp']['server']) && empty($item['OPTIONS']['smtp']['encrypted']))
				{
					$config = $item['OPTIONS']['smtp'];
					break;
				}
			}

			$cache->startDataCache();
			$cache->endDataCache($config);
		}

		if ($config)
		{
			$config = new SmtpConfig(array(
				'from' => $email,
				'host' => $config['server'],
				'port' => $config['port'],
				'protocol' => $config['protocol'],
				'login' => $config['login'],
				'password' => $config['password'],
				'isOauth' => $config['isOauth'],
			));
			if ($config->getIsOauth() && CModule::includeModule('mail'))
			{
				$token = BitrixMailHelperOAuth::getTokenByMeta($config->getPassword());
				$config->setPassword($token);
			}
		}

		$smtp[$email] = $config;
	}

	return $smtp[$email];
}