Добро пожаловать на сайт <БагБД>, где вы можете задавать вопросы о программировании и разработке на Битрикс и Битрикс24, и получать быстрые и квалифицированные ответы от профессионалов!

Автоматизация рассылки выпусков

00 голосов
1
Не получается настроить автоматическую рассылку подписчикам.

пруф
Цитата
Екатерина Обросова писала:
При указании статуса в поле STATUS следует учитывать, что при переводе из одного статуса в другой могут выполняться определенные действия. Так, например, при переводе из статуса "Черновик" ("D"smile;) в статус "В процессе" ("P"smile;) формируется список адресов по которым будет происходить отправка. А именно емейлы на которые требуется отправить выпуск попадают в таблицу b_posting_email со статусом "Y". Если при добавлении выпуска сразу указать статус "В процессе" ("Р"smile;) то процесс добавления емейлов с таблицу b_posting_email не произойдет и выпуск никому не отправится. При этом статус выпуска сменится на "S" (отправлен успешно).


Теперь смотри код:
Код
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 />';
      }
   }
}

$arMRubricList - массив с рубриками. Если убрать сроку $arFields["STATUS"] = "D";, то при добавлении выпуска статус автоматом ставится на "В процессе" (Р), но таблица "b_posting_email" остается пустой. В следствии чего агент CPosting::AutoSend(".$ID.",true); ничего не отсылает. А вот если оставить эту строчку, а потом сменить статус, то таблица заполнится е-майлами подписчиков.
Возникает вопрос: как же тогда настроить автоматическую рассылку подписчикам? т.к. выпуск генерируется сразу со статусом P.
Надеюсь ясно, что я пытаюсь растолковать smile:)

------------------------------
Из выявленных ошибок при проверке сайта:
1. Наличие необходимых модулей php Не установлены требуемые расширения:
Поддержка ssl не настроена в php.
2. Загрузка файла больше 4Мб подробнееОшибка
Стоит на денвере. После установ
спросил 15 Фев, 14 от KILLERI (380 баллов)

1 Ответ

00 голосов
В голове каша, думал создаю тикет smile:)
ответил 07 Июль, 14 от KILLERI (380 баллов)

Похожие вопросы

0 голосов
0 ответов
0 голосов
1 ответ
спросил 14 Март, 14 от ASpec (160 баллов)
0 голосов
2 ответов
спросил 07 Март, 14 от Marcion (220 баллов)
0 голосов
4 ответов
спросил 05 Янв, 14 от Tenshi (100 баллов)
0 голосов
6 ответов
спросил 12 Окт, 13 от SonyTV (240 баллов)