• Модуль: main
  • Путь к файлу: ~/bitrix/modules/main/classes/general/site_checker.php
  • Класс: CSiteCheckerTest
  • Вызов: CSiteCheckerTest::check_mail_push
function check_mail_push()
{
	$site = BitrixMainSiteTable::getList(array(
		'select' => array('LID', 'NAME', 'SERVER_NAME'),
		'order'  => array('DEF' => 'DESC', 'SORT' => 'ASC'),
	))->fetch();
	$context = BitrixMainApplication::getInstance()->getContext();

	$domain = $site['SERVER_NAME'] ?: COption::getOptionString('main', 'server_name', '');

	if (preg_match('/^(?.+):(?d+)$/', $domain, $matches))
		$domain = $matches['domain'];
	if (!getmxrr($domain, $mxhosts) || !count($mxhosts))
		return $this->Result(null ,GetMessage('SC_ERR_DNS', array('#DOMAIN#' => $domain)));

	foreach($mxhosts as $mx)
	{
		if ($mx != 'mail-001.bitrix24.com')
		{
			print_r($mxhosts);
			return $this->Result(null, GetMessage('SC_ERR_DNS_WRONG', array('#DOMAIN#' => $mx)));
		}
	}

	if (!$res = $this->ConnectToHost('mail-001.bitrix24.com', 25))
		return $this->Result(null, GetMessage('SC_ERR_CONNECT_MAIL001'));

	echo fgets($res);
	fwrite($res, "HELO ".$domain."rn");
	echo fgets($res);
	fwrite($res, "MAIL FROM: sitecheckerfrom@".$domain."rn");
	echo fgets($res);
	fwrite($res, "RCPT TO: rplsitecheckerto@".$domain."rn");
	echo fgets($res);
	fwrite($res, "DATArn");
	echo fgets($res);
	fwrite($res,
	"From: sitecheckerfrom@".$domain."rn".
	"To: rplsitecheckerto@".$domain."rn".
	"Subject: Site checker mail testrn".
	"Content-type: text/plainrn".
	"MIME-Version: 1.0rn".
	"rn".
	".rn");
	echo ($str = fgets($res));
	fclose($res);
	if (preg_match('#(Bad Request 400)#i', $str))
	{
		echo "Successn";
		return true;
	}
	return $this->Result(null, GetMessage('SC_ERR_TEST_MAIL_PUSH', array('#DOMAIN#' => $domain)));
}