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