Проблема отправки писем. Bitrix

159
23 марта 2019, 11:30

У меня странная проблема происходит с классом 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 
                ); 
            }

Answer 1

письма приходят адресатам но их слишком много

Вот тут

$rsUsers = CUser::GetList(($by="id"), ($order = "asc"), $filter, $arSelect);

в качестве фильтра вы указываете $filter, который нигде не объявлен. В итоге вместо избранных вы получаете ВСЕХ пользователей.

READ ALSO
Работа .htaccess на nginx

Работа .htaccess на nginx

Так как файлhtaccess на nginx не работает, сделал такие правила:

141
Очень долго приходит заявка с сайта mail()

Очень долго приходит заявка с сайта mail()

У меня почему-то очень долго приходит заявка с сайта на мой емейл подскажите как исправить

139
Как правильно создать массив php?

Как правильно создать массив php?

Я новичок и пытаюсь создать массив методами phpНужно получить следующий массив:

135