[B]Не получается настроить автоматическую рассылку подписчикам.[/B]
[url=http://dev.1c-bitrix.ru/api_help/subscribe/classes/cposting/cpostingadd.php]пруф[/url][QUOTE][B]Екатерина Обросова писала:[/B]
При указании статуса в поле STATUS следует учитывать, что при переводе из одного статуса в другой могут выполняться определенные действия. Так, например, при переводе из статуса "Черновик" ("D";) в статус "В процессе" ("P";) формируется список адресов по которым будет происходить отправка. А именно емейлы на которые требуется отправить выпуск попадают в таблицу b_posting_email со статусом "Y". Если при добавлении выпуска сразу указать статус "В процессе" ("Р";) то процесс добавления емейлов с таблицу b_posting_email не произойдет и выпуск никому не отправится. При этом статус выпуска сменится на "S" (отправлен успешно).[/QUOTE]
Теперь смотри код:
[CODE]foreach($arMRubricList as $RKey => $arRubric)
{
//echo '$arRubric -> ';
//echo"<pre>";print_r($arRubric);echo"</pre>";
if(CPostingTemplate::IsExists($arRubric["TEMPLATE"]))
{
$strFileName= $_SERVER["DOCUMENT_ROOT"]."/".$arRubric["TEMPLATE"]."/lang/".$arSite["LANGUAGE_ID"]."/template.php";
if(file_exists($strFileName))
include($strFileName);
//Execute template
$strFileName= $_SERVER["DOCUMENT_ROOT"]."/".$arRubric["TEMPLATE"]."/template.php";
if(file_exists($strFileName))
{
ob_start();
$arFields = @include($strFileName);
$strBody = ob_get_contents();
ob_end_clean();
}
}
if(is_array($arFields))
{
//echo '$arFields -> ';
//echo"<pre>";print_r($arFields);echo"</pre>";
$cPosting=new CPosting;
$arFields["BODY"] = $strBody;
$arFields["RUB_ID"] = array($arRubric["ID"]);
$arFields["MSG_CHARSET"] = $arLang["CHARSET"];
[COLOR=#FF0000]$arFields["STATUS"] = "D"; // realy need[/COLOR]
//echo '$arFields -> ';
//echo"<pre>";print_r($arFields);echo"</pre>";
$ID = $cPosting->Add($arFields);
if($ID>0)
{
if($cPosting->ChangeStatus($ID, "P"))
{
echo 'true ChangeStatus<br />';
$arEmailStatuses = CPosting::GetEmailStatuses($ID);
echo"<pre>";print_r($arEmailStatuses);echo"</pre>";
$time = ConvertTimeStamp(time()+10, "FULL");
CAgent::AddAgent("CPosting::AutoSend(".$ID.",true);", "subscribe", "N", 0, $time, "Y", $time);
/*
$res = $cPosting->SendMessage($ID, 10, 10);
if(!$res)
{
echo "<hr />false SendMessage<br />";
echo $cPosting->LAST_ERROR.'<br />';
} else {
echo "<hr /><h1><font color=blue>SendMessage</font></h1><br />";
}
*/
} else {
echo "false change status<br />";
echo $cPosting->LAST_ERROR.'<br />';
}
} else {
echo "false add posting<br />";
echo $cPosting->LAST_ERROR.'<br />';
}
}
}[/CODE]
[B]$arMRubricList[/B] - массив с рубриками. Если убрать сроку [I]$arFields["STATUS"] = "D";[/I], то при добавлении выпуска статус автоматом ставится на "В процессе" (Р), но таблица "b_posting_email" остается пустой. В следствии чего агент [I]CPosting::AutoSend(".$ID.",true);[/I] ничего не отсылает. А вот если оставить эту строчку, а потом сменить статус, то таблица заполнится е-майлами подписчиков.
Возникает вопрос: как же тогда настроить автоматическую рассылку подписчикам? т.к. выпуск генерируется сразу со статусом P.
Надеюсь ясно, что я пытаюсь растолковать :)
------------------------------
Из выявленных ошибок при проверке сайта:
1. Наличие необходимых модулей php Не установлены требуемые расширения:
Поддержка ssl не настроена в php.
2. Загрузка файла больше 4Мб подробнееОшибка
Стоит на денвере. После установки лишь изменились настройки в php.ini для установки сайта в win1251.