День добрый.
Возникла необходимость рассылки писем по почтовым шаблонам с логированием отправки. Решил организовать это, пуская письма через модуль рассылки, расширив класс CEvent:
Выпуски успешно добавляются, письма уходят. Есть только одна проблема: при отправке таким образом письмо уходит с пустым заголовком, а если отправить его вручную из рассылок, то заголовок есть. Подскажите, пожалуйста, как это исправить. Или другой способ, если есть.
Возникла необходимость рассылки писем по почтовым шаблонам с логированием отправки. Решил организовать это, пуская письма через модуль рассылки, расширив класс CEvent:
Код |
---|
namespace CSN; class CEvent extends \CEvent { <...> function SendIssue($event, $lid, $arFields, $message_id = "") { $ID = ""; $arFields = array_merge($arFields, $this->GetSiteFieldsArray($lid)); // Adding stndard fields for replacement // Declare filter for posting templates $arFilter = array("TYPE_ID" => $event); if ($message_id) $arFilter["ID"] = $message_id; // Process all posting templates $errors = ""; $obMessage = new \CEventMessage; $obPosting = new \CPosting; $rsMessages = $obMessage->GetList($by = "id", $order = "asc", $arFilter); while ($arMessage = $rsMessages->Fetch()) { $arPostFields = array( "FROM_FIELD" => $this->ReplaceTemplate($arMessage["EMAIL_FROM"], $arFields), "TO_FIELD" => $this->ReplaceTemplate($arMessage["EMAIL_TO"], $arFields), "DIRECT_SEND" => "Y", "BCC_FIELD" => $this->ReplaceTemplate($arMessage["EMAIL_TO"], $arFields), "SUBJECT" => $this->ReplaceTemplate($arMessage["SUBJECT"], $arFields), "BODY_TYPE" => $arMessage["BODY_TYPE"], "BODY" => $this->ReplaceTemplate($arMessage["MESSAGE"], $arFields), "STATUS" => "D" ); $ID = $obPosting->Add($arPostFields); if ($ID) { $obPosting->ChangeStatus($ID, "P"); $obPosting->AutoSend($ID); } else { $errors .= $obPosting->LAST_ERROR . "\n"; } } <...> } <...> } |