SendMessage
Описание и параметры
mixed CPosting::SendMessage( int ID, int timeout = 0, int maxcount = 0,< bool check_charset = false, );
Нестатический метод отправляет выпуск в почтовую рассылку по адресам, указанным в таблице b_posting_email с соответствующим идентификатором выпуска. При этом обновляя статусы:
- Y - еще не отправлялось
- N - отправлено
- Е - с ошибками
Сначала выполняется попытка получения блокировки выпуска (см. CPosting::Lock). Если блокировку получить не удалось, то отправка считается частичной и возвращается "CONTINUE". Затем формируется тело письма для отправки и в цикле по адресам подписчиков осуществляется отправка выпуска с использованием функции bxmail.
В режиме отправки "Персонально каждому получателю" перед вызовом bxmail вызываются обработчики события BeforePostingSendMail.
В цикле отправки в очереди адресов делаются отметки об успешной отправке или ошибке.
С выпуска снимается блокировка(см. CPosting::UnLock).
Параметры
| Параметр | Описание | C версии |
|---|---|---|
| ID | Идентификатор выпуска. | |
| timeout | Максимальное время отправки в секундах. При превышении этого времени прерывается работа и устанавливается статус выпуска "Частично отправлен". Параметр имеет значение только при методе отправки "Персонально каждому получателю". Если timeout=0, то отправка производится за один шаг. | 3.2.0 |
| maxcount | Максимальное количество писем для отправки. При превышении этого количества прерывается работа и устанавливается статус выпуска "Частично отправлен". Параметр имеет значение только при методе отправки "Персонально каждому получателю". Если maxcount=0, то отправка производится за один шаг. | 4.0.5 |
| check_charset | Сопоставлять текущую кодировку (константа LANG_CHARSET) с кодировкой в которой составлен выпуск или нет. Если кодировки не совпадают, то вернется "CONTINUE". Используется при отправке выпусков с помощью агентов. Сравнение выполняется без учета регистра кодировок. | 8.0.1 |
Возвращаемые значения
Функция возвращает true при успешной отправке, false при неуспешной, "CONTINUE" при частичной отправке. При неуспешной отправке переменная LAST_ERROR класса содержит сообщение об ошибке.
Примеры использования
<?
if($action=="send" && $ID>0):
if(($res = $cPosting->SendMessage($ID, COption::GetOptionString("subscribe", "posting_interval"))) !== false):
if($res === "CONTINUE"):
?>
<script language="JavaScript" type="text/javascript">
<!--
function DoNext(){window.location="<?echo $APPLICATION->GetCurPage()."?ID=".$ID."&action=send&lang=".LANG."&rnd=".rand();?>";}
setTimeout('DoNext()', 2500);
//-->
</script>
<?
else:
$strOk = "Sent successfully.";
endif; //$res === "CONTINUE"
endif; //$cPosting->SendMessage
$strError .= $cPosting->LAST_ERROR;
endif; //$action=="send"