- Модуль: main
- Путь к файлу: ~/bitrix/modules/main/lib/mail/sender.php
- Класс: BitrixMainMailSender
- Вызов: Sender::delete
static function delete($ids)
{
if(!is_array($ids))
{
$ids = [$ids];
}
if(empty($ids))
{
return;
}
$smtpConfigs = [];
$senders = SenderTable::getList([
'order' => [
'ID' => 'desc',
],
'filter' => [
'=USER_ID' => CurrentUser::get()->getId(),
'@ID' => $ids,
'IS_CONFIRMED' => true]
]
)->fetchAll();
foreach($senders as $sender)
{
if(!empty($sender['OPTIONS']['smtp']['server']) && empty($sender['OPTIONS']['smtp']['encrypted']) && !isset($smtpConfigs[$sender['EMAIL']]))
{
$smtpConfigs[$sender['EMAIL']] = $sender['OPTIONS']['smtp'];
}
}
if(!empty($smtpConfigs))
{
$senders = SenderTable::getList([
'order' => [
'ID' => 'desc',
],
'filter' => [
'@EMAIL' => array_keys($smtpConfigs),
'!ID' => $ids
]
])->fetchAll();
foreach($senders as $sender)
{
if(isset($smtpConfigs[$sender['EMAIL']]))
{
$options = $sender['OPTIONS'];
$options['smtp'] = $smtpConfigs[$sender['EMAIL']];
$result = SenderTable::update($sender['ID'], [
'OPTIONS' => $options,
]);
if($result->isSuccess())
{
unset($smtpConfigs[$sender['EMAIL']]);
static::clearCustomSmtpCache($sender['EMAIL']);
}
if(empty($smtpConfigs))
{
break;
}
}
}
}
foreach ((array) $ids as $id)
{
InternalSenderTable::delete(
(int) $id
);
}
}