• Модуль: mail
  • Путь к файлу: ~/bitrix/modules/mail/classes/general/mail.php
  • Класс: CMailBox
  • Вызов: CMailBox::Add
static function Add($arFields)
{
	global $DB;
	CMailError::ResetErrors();

	$arFields = array_filter($arFields, 'is_set');

	if($arFields["ACTIVE"] != "Y")
		$arFields["ACTIVE"] = "N";

	if($arFields["DELETE_MESSAGES"] != "Y")
		$arFields["DELETE_MESSAGES"] = "N";

	if($arFields["USE_MD5"] != "Y")
		$arFields["USE_MD5"] = "N";

	if ($arFields['USE_TLS'] != 'Y' && $arFields['USE_TLS'] != 'S')
		$arFields["USE_TLS"] = "N";

	if (!in_array($arFields["SERVER_TYPE"], array("pop3", "smtp", "imap", "controller", "domain", "crdomain")))
		$arFields["SERVER_TYPE"] = "pop3";

	if (!CMailBox::CheckFields($arFields))
		return false;

	$ID = BitrixMailMailboxTable::add($arFields)->getId();
	if ($arFields['ACTIVE'] == 'Y' && $arFields['USER_ID'] != 0)
	{
		CUserCounter::Clear($arFields['USER_ID'], 'mail_unseen', $arFields['LID']);
		$mailboxSyncManager = new BitrixMailHelperMailboxMailboxSyncManager($arFields['USER_ID']);
		$mailboxSyncManager->setDefaultSyncData($ID);
	}
	if (in_array($arFields['SERVER_TYPE'], array('imap', 'controller', 'domain', 'crdomain')))
	{
		CAgent::addAgent(sprintf('BitrixMailHelper::syncMailboxAgent(%u);', $ID), 'mail', 'N', (int) $arFields['PERIOD_CHECK'] * 60);
		CAgent::addAgent(sprintf('BitrixMailHelper::cleanupMailboxAgent(%u);', $ID), 'mail', 'N', 3600 * 24);
	}

	if ($arFields['SERVER_TYPE'] == 'pop3' && (int) $arFields['PERIOD_CHECK'] > 0)
		CAgent::addAgent(sprintf('CMailbox::CheckMailAgent(%u);', $ID), 'mail', 'N', (int) $arFields['PERIOD_CHECK']*60);

	CMailbox::SMTPReload();
	return $ID;
}