• DONATE to NULLED!
    Форуму и его команде можно помочь, мотивировать модераторов разделов.
    Помогите модератору этого раздела wpt лично.

Помощь Не приходят почтовые уведомления администратору сайта.

Voland700

Создатель
Регистрация
16 Дек 2013
Сообщения
53
Реакции
4
Проблема с настройкой получения почтовых уведомлений о всех событиях на почту администратора: заказах товара, обратного звонка, а так же сообщений отправленных с форм на сайте – нашли дешевле, задать вопрос, и других.

Сайт развернул на Bitrix - Аспро.NEXT. Почта настроена через PDD Яндекс. Уведомления пользователю отправляются и приходят успешно, но администратору нет.

В типовые настройки Битрикс для отправки почты вроде бы сделаны все правильно.
Указа Е-mail администратора для отправки и получения сообщений в настройках главного модуля в полях:
- Email (или список через запятую), на который будут дублироваться исходящие сообщения;
- Email администратора сайта (отправитель по умолчанию).
- В настройках модуля Интренет магазин, в поле E-Mail отдела продаж, так же указан.

SQL – запрос типа: select * from b_event where event_name like '%form%' order by date_insert desc

показывает результат – Y, то есть почтовое сообщение отправлено успешно.

В почтовых шаблонах, например SALE_NEW_ORDER – в поле скрытая копия, - #BCC# - указан.

Прошу помощи:
Кто ни будь сталкивался с такой проблемой? Как решить? Куда смотреть и как исправить?
 
Была похожая проблема, решил так:
создал в php_interface файл с названием init.php код приведён ниже, прописал нужный мне тип почтового события, в данном случае SOLAR_SALE_NEW_ORDER_ADMIN, теперь мне приходят сообщение с нужными мне свойствами заказа.

Код:
<?
use Bitrix\Catalog\StoreTable;
use Gt\Listeners\AbstractListener,
    Gt\Helper\Tools,
    \Bitrix\Main\Event,
    \Bitrix\Main\Mail\Event as MailEvent,
    \Bitrix\Main\Context,
    \Bitrix\Sale,
    \Bitrix\Main\UserTable;


AddEventHandler("sale", "OnOrderNewSendEmail", "sendAdminNotification");

function sendAdminNotification($orderId, $eventName, $arFields) {
    $context = Context::getCurrent();
    $request = $context->getRequest();

    $order = Sale\Order::load($orderId);
    $propertyCollection = $order->getPropertyCollection();
    $arProperty = changeArrayKeysByValue($propertyCollection->getArray()['properties'], 'CODE');
    $paymentCollection = $order->getPaymentCollection();
    $deliveryCollection = $order->getShipmentCollection();

    $arStore = [];
    $buyerStore = (int)$request->get('BUYER_STORE');
    if($buyerStore > 0) {
        $arStore = StoreTable::getList([
            'select' => ['TITLE', 'EMAIL'],
            'filter' => ['ID' => $buyerStore],
            'limit' => 1
        ])->fetch();
    }
    /*$emailTo = !empty($arStore['EMAIL']) ?
        $arStore['EMAIL'] : $CITY_DATA['PROPERTY_SALE_EMAIL_VALUE'];*/

    MailEvent::send([
        "EVENT_NAME" => "SOLAR_SALE_NEW_ORDER_ADMIN",
        "LID" => $context->getSite(),
        "C_FIELDS" => array_merge($arFields, [
            //"BCC" => "",
            //"SALE_EMAIL" => $saleEmail,//$CITY_DATA['PROPERTY_SALE_EMAIL_VALUE'],
            //"EMAIL" => $emailTo,
            "USER_NAME" => $arProperty['FIO']['VALUE'],
            "USER_PHONE" => $arProperty['PHONE']['VALUE'],//$propertyCollection->getPhone(),
            "USER_EMAIL" => $arProperty['EMAIL']['VALUE'],
            "USER_ADDRESS" => $arProperty['ADDRESS']['VALUE'],//$propertyCollection->getAddress(),
            "ORDER_PRICE" => $order->getPrice(),
            "DELIVERY_PRICE" => $order->getDeliveryPrice(),
            "PAY_SYSTEM" => $paymentCollection->current()->getPaymentSystemName(),
            "DELIVERY_SYSTEM" => $deliveryCollection->current()->getField('DELIVERY_NAME'),
            "STORE_NAME" => $arStore['TITLE']
        ])
    ]);
}

function changeArrayKeysByValue($array, $propertyCode) {
    if(empty($array) || empty($propertyCode))
        return $array;

    $tempArray = [];
    foreach($array as $key => $value) {
        if(empty($value[$propertyCode]))
            return $array;

        $tempArray[$value[$propertyCode]] = $value;
    }

    return $tempArray;
}
 
Последнее редактирование:
Была похожая проблема, решил так:
создал в php_interface файл с названием init.php код приведён ниже, прописал нужный мне тип почтового события, в данном случае SOLAR_SALE_NEW_ORDER_ADMIN , теперь мне приходят сообщение с нужными мне свойствами заказа.

Благодарю!

1. Как рекомендовано создал init.php - с приведенным в спойлере кодом под свое почтовое событие "NORD_SALE_NEW_ORDER_ADMIN"
2. Создал тип нового почтового события "NORD_SALE_NEW_ORDER_ADMIN"
3. Создал шаблон под это событие.

Уведомление все равно на почту администратора не приходят, при этом при запросе к базе в поле SUCCESS_EXEC везде "Y" - успешно отправлено.

В чем может быть проблема?
 
Последнее редактирование:
С init.php - это ненужный костыль и похоже не ваш случай, т.к. Вы пишите, что:
Уведомления пользователю отправляются и приходят успешно, но администратору нет.
Значит первым делом нужно отсечь вариант проблем с почтой админа.
Возьмите вместо почты админа поставьте свой любой адрес @gmail и протестируйте.
Если почта для админа на Gmail приходит - проблема была в почтовом серваке , а не в сайте.
 
Если битрикс окружение и msmtp, в логах можно посмотреть детали. Ну и я для себя решил, что почту админа лучше делать на этом же домене. Если она другая, настроить пересылку внутри яндекса через правило "пересылать всё, кроме спама"
 
Значит первым делом нужно отсечь вариант проблем с почтой админа.
Если битрикс окружение и msmtp, в логах можно посмотреть детали. Ну и я для себя решил, что почту админа лучше делать на этом же домене. Если она другая, настроить пересылку внутри яндекса через правило "пересылать всё, кроме спама"

Благодарю! Проблема решена.

В данном случае проблема была в настройках почтового сервера. Сайт работал на VPS сервере под установленной панелью BrainyCP. Не получалось правильно настроить под Битрикс SMTP и DIKM - подпись, все отправляемые письма отфильтровывались как СПАМ. Перезапустил и настроил сервер под BitrixVM теперь все письма отправляются и доходят.
 
Вот поэтому я в случае проблем с доставкой писем и проверяю всегда сначала через Gmail - он не доставит письмо только в двух случаях:
- если IP отправитель в спам блек-листе, это проверяется сервисами типа Для просмотра ссылки Войди или Зарегистрируйся > удаляем IP из баз.
- если сам сайт письмо не отправил > разбираемся с CMS.

А если в Gmail приходит, а на другой сервак нет, значит причин может быть четыре:
  1. DKIM
  2. SPF
  3. DMARC
  4. обратная зона (некоторые почтовые сервера рукожопых админов или помешанных на безопасности до сих пор ее требуют).
Первые три решаются легко самостоятельно (их, кстати, отображает Gmail при просмотре письма "Показать оригинал").

А обратная зона, если ее прописать действительно нельзя - решается установкой модуля wsrubi.smtp (отправка писем сайта через сторонний SMTP) и отправкой с корпоративного SMTP клиента или тупо из специального созданного ящика Gmail (включаете IMAP и он позволяет отправлять через свой SMTP).
 
Последнее редактирование:
@nyx может быть у тебя есть идеи как побороть следующее. В Аспро Максе при заказе в 1клик уведомления должны прилетать админу и на емайл покупателя. Имеется б.окружение, почта ходит через msmtp. Абсолютно все уведомления летают нормально, кроме уведомлений покупателю при заказе в 1клик. В логах msmtp следующая запись:
Скрытое содержимое доступно для зарегистрированных пользователей!

Причина понятна, не может отправить на этот адрес (выделил жирным), вопрос - почему нет преобразования этого хэштега в email..
 
@nyx может быть у тебя есть идеи как побороть следующее. В Аспро Максе при заказе в 1клик уведомления должны прилетать админу и на емайл покупателя. Имеется б.окружение, почта ходит через msmtp. Абсолютно все уведомления летают нормально, кроме уведомлений покупателю при заказе в 1клик. В логах msmtp следующая запись:

Причина понятна, не может отправить на этот адрес (выделил жирным), вопрос - почему нет преобразования этого хэштега в email..
Ну, вебокружение и msmtp тут точно не причем.
Потестить не могу, "Аспро Макс" я еще не тестил.
Куда я бы сразу глянул - это в почтовое событие "заказ в 1клик", тут в описании список хештеговых параметров события, если #EMAIL_BUYER# тут пропущен, подмены при отправке не будет, будет как разсветится хештег.
Скрытое содержимое доступно для зарегистрированных пользователей!

Скрытое содержимое для пользователя(ей): wpt, nyx
 
Куда я бы сразу глянул - это в почтовое событие "заказ в 1клик", тут в описании список хештеговых параметров события, если #EMAIL_BUYER# тут пропущен, подмены при отправке не будет, будет как разсветится хештег.

Спасибо за наводку, там смотрел - всё прописано
В почтовом уведомлении также все значения приходят пустые, потому что ни один из хэштегов ниже в уведомлении не преобразовывается..

Скрытое содержимое доступно для зарегистрированных пользователей!
 
Назад
Сверху