- Модуль: 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];
}