У меня странная проблема происходит с классом CEvent::Send. Организовал рассылку писем адресам, которые берутся из input
. input
добавляются динамически по кнопке (нажал добавить email появился еще input
). Все адреса собираются в один массив и добавляются 'EMAIL' => $values
Затем происходит отправка писем, письма приходят адресатам но их слишком много (я насчитал порядка 100) хотя кнопку "отправить email" нажал один раз.
Код:
function addUsesOutSystem() {
var valInput = {};
var i = 0;
$('.edd').each(function() {
valInput[i] = this.value;
i++;
})
var data = {
'action' : 'addUsesOutSystem',
'valInput' : valInput,
'IBLOCK_ID' : '<?=$_REQUEST["IBLOCK_ID"]?>',
'ELEMENT_ID' : '<?=$_REQUEST["ELEMENT_ID"]?>'
};
$.ajax({
url: "/api/",
type: "POST",
data: data,
success: function(json){
console.log(data);
$('.but').html(data);
// alert(data);
if (!json.error) {
$('.yes2').html('Отправлено');
}else {
$('.yes2').html('Не отправлено');
}
return "";
}
});
}
Код обработчик этой функции:
if ($_POST['valInput']) {
$values[] = $_POST['valInput'];
$arSelect = Array("ID", "IBLOCK_ID", "NAME", "DATE_ACTIVE_TO", "DATE_ACTIVE_FROM", "PROPERTY_*");
$arFilter = Array("IBLOCK_ID"=> $_REQUEST["IBLOCK_ID"], '=ID' => $_REQUEST['ELEMENT_ID']);
$res = CIBlockElement::GetList(Array(), $arFilter, false, false, $arSelect);
while($ob = $res->GetNextElement()){
$arFields = $ob->GetFields();
$arProps = $ob->GetProperties();
$arFields['PROP'] = $arProps;
$arNelikvid = $arFields;
}
$textItem = '';
if (!$arNelikvid['PROP']['template_mail']['~VALUE']['TEXT']) {
$arPorText = array();
$arPorText['TEXT_POST'] = COption::GetOptionString('sinergo_post', 'TextPost6');
if (COption::GetOptionString('sinergo_post', 'ValPost6')) {
$arSelect = Array("ID", "IBLOCK_ID", "NAME", "PROPERTY_POST");
$arFilter = Array("IBLOCK_CODE" => 'POST_COMPANU', '=ID' => COption::GetOptionString('sinergo_post', 'ValPost6'));
$res = CIBlockElement::GetList(Array(), $arFilter, false, false, $arSelect);
$arResult = array();
while($ob = $res->GetNextElement()){
$arFields = $ob->GetFields();
$arPorText['POST_VALUE'] = $arFields['PROPERTY_POST_VALUE'].': '.$arFields['NAME'];
}
}
$arSelect = array('SELECT' => array('UF_SHORTNAME', 'UF_DIRECTOR', 'UF_NAME', 'UF_MIDNAME', 'UF_SHORTNAME'));
$rsUsers = CUser::GetList(($by="id"), ($order = "asc"), $filter, $arSelect); // выбираем пользователей
while($reg = $rsUsers->Fetch()){
$arUses[] = $reg;
}
$arPorText1 = array();
foreach ($arNelikvid['PROP'] as $arNelikvidProp) {
if ($arNelikvidProp['CODE'] == 'ADMIN_PROC') {
if ($arNelikvidProp['VALUE']) {
$filter = Array(
"ID" => $arNelikvidProp['VALUE']
);
}else{
$filter = Array(
"ID" => '1'
);
}
$arSelect = array('SELECT' => array('UF_SURNAME', 'UF_NAME', 'UF_MIDNAME', 'UF_SHORTNAME', 'UF_MOBILE'));
$rsUsers = CUser::GetList(($by="ID"), ($order = "asc"), $filter, $arSelect); // выбираем пользователей
while($reg = $rsUsers->Fetch()){
$adminProd = $reg;
}
$arPorText1['ADMIN_PROC_EMAIL'] = $adminProd['EMAIL'];
$arPorText1['ADMIN_PROC_PHONE'] = $adminProd['UF_MOBILE'];
}
}
foreach ($arPorText1 as $code => $val) {
$textItem = str_replace('#'.$code.'#', $val, $textItem);
}
foreach($arUses as $usesItem){
$textItem= str_replace('№В-0', '№ '.numMail().'В-0', $textItem);
$textItem = str_replace('#POST_ADDRES#', 'Директор', $textItem);
$textItem = str_replace('#COMPANU_ADDRES#', $usesItem['UF_SHORTNAME'], $textItem);
$textItem = str_replace('#FIO_ADDRES#', $usesItem['UF_SURNAME'].' '.$usesItem['UF_NAME'].' '.$usesItem['UF_MIDNAME'].' '.$usesItem['UF_DIRECTOR'], $textItem);
$arEventFields = array('TEXT' => $textItem, 'EMAIL' => $values, 'ELEMENT_ID' => $_REQUEST['ELEMENT_ID']);
}
CEvent::Send("Invitation_procedure_illiquid_assets", "s1", $arEventFields, "Y", 35);
$json = array(
'error' => false
);
}else {
$json = array(
'error' => true
);
}
письма приходят адресатам но их слишком много
Вот тут
$rsUsers = CUser::GetList(($by="id"), ($order = "asc"), $filter, $arSelect);
в качестве фильтра вы указываете $filter
, который нигде не объявлен. В итоге вместо избранных вы получаете ВСЕХ пользователей.
Виртуальный выделенный сервер (VDS) становится отличным выбором
У меня почему-то очень долго приходит заявка с сайта на мой емейл подскажите как исправить
Я новичок и пытаюсь создать массив методами phpНужно получить следующий массив: