Menro
web, seo, email, hack
- Регистрация
- 27 Янв 2008
- Сообщения
- 689
- Реакции
- 138
- Автор темы
- #1
Коллеги, всем привет!
Сегодня пол дня пытаюсь понять чё за фигня, пробовал сам, просил знакомого программиста глянуть (бегло глянул тоже не понял), вот думаю, может кто-то подскажет или выдвинет сою теории по этому поводу.
Вот такая функция, которая модифицирует письмо о заказе перед отправкой.
Всё внимание на это:
В конце сейчас у меня к значению переменной добавлена точка и в таком случае, письмо приходит и там всё чётко (выводится название способа доставки и оплаты).
Но если название выводить без точки, то всё, письмо не приходит, ошибок в логе нет.
Пробовал делать так:
Ну и дальше:
Тоже самое. Пока не добавишь любой символ - не отправляет письмо. Причем символ любой, на русском или английском языке.
Сколько бы я не думал, я никак не могу понять, почему добавление любого символа приводит к положительному результату, а его не добавление к отрицательному.
Также стоит сказать, другие поля типа адреса и телефона прекрасно работают как надо.
Любые мысли....
Хоть проблема и решена точкой, но для себя интересно, что блин не так??
Сегодня пол дня пытаюсь понять чё за фигня, пробовал сам, просил знакомого программиста глянуть (бегло глянул тоже не понял), вот думаю, может кто-то подскажет или выдвинет сою теории по этому поводу.
Вот такая функция, которая модифицирует письмо о заказе перед отправкой.
Код:
<?php
AddEventHandler("sale", "OnOrderNewSendEmail", "ModifySaleMails");
function ModifySaleMails($orderID, &$eventName, &$arFields)
{
$arOrder = CSaleOrder::GetByID($orderID);
$order_props = CSaleOrderPropsValue::GetOrderProps($orderID);
$phone = "";
$address = "";
$city_name = "";
$delivery_name = "";
$payment_name = "";
while ($arProps = $order_props->Fetch()){
if ($arProps["CODE"] == "PHONE"){
$phone = htmlspecialchars($arProps["VALUE"]);
}
if ($arProps["CODE"] == "ADDRESS"){
$address = htmlspecialchars($arProps["VALUE"]);
}
if ($arProps["CODE"] == "CITY") {
$city = htmlspecialchars($arProps["VALUE"]);
}
}
$arDeliv = CSaleDelivery::GetByID($arOrder["DELIVERY_ID"]);
$arPayment = CSalePaySystem::GetByID($arOrder["PAY_SYSTEM_ID"]);
$delivery_name = htmlspecialchars($arDeliv['NAME']);
$payment_name = htmlspecialchars($arPayment['NAME']);
$arFields["PHONE"] = $phone;
$arFields["ADDRESS"] = $address;
$arFields["CITY"] = $city;
$arFields["DELIVERY_NAME"] = $delivery_name.'.';
$arFields["PAYMENT_NAME"] = $payment_name.'.';
}
Всё внимание на это:
Код:
$arFields["DELIVERY_NAME"] = $delivery_name.'.';
$arFields["PAYMENT_NAME"] = $payment_name.'.';
В конце сейчас у меня к значению переменной добавлена точка и в таком случае, письмо приходит и там всё чётко (выводится название способа доставки и оплаты).
Но если название выводить без точки, то всё, письмо не приходит, ошибок в логе нет.
Пробовал делать так:
Код:
if ($arOrder["DELIVERY_ID"] == 1) {
$payment_name= 'Курьерская доставка';
}
Ну и дальше:
Код:
$arFields["DELIVERY_NAME"] = $delivery_name;
Тоже самое. Пока не добавишь любой символ - не отправляет письмо. Причем символ любой, на русском или английском языке.
Сколько бы я не думал, я никак не могу понять, почему добавление любого символа приводит к положительному результату, а его не добавление к отрицательному.
Также стоит сказать, другие поля типа адреса и телефона прекрасно работают как надо.
Любые мысли....
Хоть проблема и решена точкой, но для себя интересно, что блин не так??