Автор Тема: Модуль BlockWishList не отправляет сообщения на e-mail  (Прочитано 2196 раз)

01 Октября 2014, 15:52:15
  • Новичок
  • *
  • Сообщений: 41
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Добрый день,

Изрыл весь интернет, единственное решение - это правка Swift.php, но мне не помогло.
Presta 1.6, модуль сегодня обновил, снёс, снова поставил, ничего не менял... добавил в Лист артикул, зашёл в WishList по ссылке в верхнем Хуке (там же кнопка Вход), на сайте залогинен.
Раскрываю свой Лист Желаний, вижу артикул, меняю кол-во и сохраняю. Далее, дважды жму на кнопку Отправить, появляется форма с 10-ю полями INPUT под ввод электронных почтовых адресов.
Заполняю первый, ниже жму Отправить - письмо не приходит...

Посмотрел формы, используется стандартная функция MAIL::SEND, набор полей есть, ошибок не вижу, режим отладки включён. В .htaccess добавил php_flag и php_value - в файле лога ошибки нет при отправке. Я в ПОЛНОМ замешательстве!  ???
Неужели я такой один?!
01 Октября 2014, 16:40:01
Ответ #1
  • Ветеран
  • *****
  • Сообщений: 1190
  • Репутация: +28/-1
  • Сообщество PrestaShop
    • Просмотр профиля
Письма о заказе, тестовое письмо работают?
01 Октября 2014, 17:09:14
Ответ #2
  • Новичок
  • *
  • Сообщений: 41
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Да, тестовое письмо уходит без проблем. MailAlert установлен... проверил, сообщение о подтверждении заказа приходит.
Шайтан! Пробовал напрямую в переменную $to ставить e-mail, результата нет. Думаю, что не в sendwishlist.php дело.

В Swift.php прописал дополнительно if (!$has_reply_to[0]) $message->setReplyTo($from->getAddress());
Не знаю насколько это актуально для 1.6. Без этой строки тоже письма не приходят.

На текущий момент не знаю, куда копать... подскажите, может как-то можно пошагово запустить отслеживание того, что делает модуль, и где он спотыкается?
01 Октября 2014, 17:15:08
Ответ #3
  • Ветеран
  • *****
  • Сообщений: 1190
  • Репутация: +28/-1
  • Сообщество PrestaShop
    • Просмотр профиля
01 Октября 2014, 17:18:35
Ответ #4
  • Новичок
  • *
  • Сообщений: 41
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Да, забыл написать, всё на месте, и в папке модуля, и в папке модуля в теме, и в EN и в RU.
У меня другой вопрос: А у Вас работает модуль? У меня ни на 1.5.6.0, ни на 1.6.0.9 - письма не приходят.

Дайте мне рабочие исходники. Если на них не заработает, то дело не в модуле...
01 Октября 2014, 17:42:27
Ответ #5
  • Ветеран
  • *****
  • Сообщений: 13121
  • Репутация: +14553/-0
  • Сообщество PrestaShop
    • Просмотр профиля
PrestaShop 1.6.0.6 + blockwishlist 0.10 - работает, отсылает письма.
01 Октября 2014, 17:55:18
Ответ #6
  • Новичок
  • *
  • Сообщений: 41
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
А есть архив исходников, может поделитесь?
Текущая версия в xml указана 1.1.4. - ой как далека она от 0.10
01 Октября 2014, 18:05:46
Ответ #7
  • Ветеран
  • *****
  • Сообщений: 13121
  • Репутация: +14553/-0
  • Сообщество PrestaShop
    • Просмотр профиля
01 Октября 2014, 18:22:40
Ответ #8
  • Новичок
  • *
  • Сообщений: 41
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Спасибо, установил. И ещё кое-что обнаружил, при удалении модуля в теме папка так и оставалась со старыми исходниками. Снёс их, теперь при отправке получаю сообщение (во вложении).

И тут уже два вопроса:
1. Почему он берёт TXT, если в настройках указано брать только html
2. Жалуется на строку MAIL.php - $template_txt = strip_tags(html_entity_decode(file_get_contents($template_path.$template.'.txt'), null, 'utf-8'));

Буду разбираться, но от подсказок и помощи не откажусь...))
01 Октября 2014, 18:58:52
Ответ #9
  • Ветеран
  • *****
  • Сообщений: 1010
  • Репутация: +2/-0
  • Сообщество PrestaShop
    • Просмотр профиля
1. Кеш почистить пробывали?
2. Версия php какая?
01 Октября 2014, 20:52:03
Ответ #10
  • Новичок
  • *
  • Сообщений: 41
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
PHP 5.3
На прошлом скриншоте система не находила шаблон txt в папке темы /leo/mails/
Т.е. лезет он не в /blockwishlist/mails/, а в общую директорию шаблонов...
Я его туда запихнул, кнопка нажалась, но результат тот же - письмо не пришло.
Что-то я запутался...((
01 Октября 2014, 20:54:32
Ответ #11
  • Новичок
  • *
  • Сообщений: 41
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Да, забыл написать - КЭШ почистил, и он отключен. Включена принудительная перекомпиляция. Папки в /cash/smarty/ - почистил...
02 Октября 2014, 09:33:06
Ответ #12
  • Новичок
  • *
  • Сообщений: 41
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Из последнего:
При установке модуля его папка в /themes/leo/modules/ не появилась. Ввиду этого, и отсутствия там шаблонов писем, была ругань на MAIL.php, в соответствии с которым модуль хотел получить шаблон из ОБЩЕЙ папки шаблонов /themes/leo/mails/.
Я скопировал в тему модулей папку blockwishlist, ругань прекратилась, кнопка сработала, но письмо не пришло.

Параллельно вчера поправил кнопку удаления Листа, для чего в основную папку модуля blockwishlist я поместил файл mywishlist.tpl, который лежит в папке views.

Я, конечно, шокирован, что с версии 0.10 до 1.4 наблюдаются такие баги модуля, и обновления этого не правят. Но это уже лирика... Основное - письмо не приходит.
Куда копать дальше?

PS: если система ругается на MAIL.php и, как встречалось один раз, на Swift.php, то процессы отправки, как минимум, запускаются. Может кто знает, как проверить, что формируется при нажатии на кнопку? В formes у Oracle можно было в строках ставить информеры, и смотреть по ним, как ходит код в форме, по какому пути и т.д. В случае Smarty и Php это можно сделать?
02 Октября 2014, 10:21:56
Ответ #13
  • Новичок
  • *
  • Сообщений: 41
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
И так, решение найдено. Дело в MAIL.php в присвоении переменной $to_name: $to_name = self::mimeEncode($to_name);

} else {
/* Simple recipient, one address */
$to_plugin = $to;
if ($to_name == null || $to_name == $to)
$to_name = '';
else
$to_name = self::mimeEncode($to_name);

$to_list->addTo($to, $to_name);
}
Изменил на $to_name = ''; - и письма стали приходить.
 
Поясните, пожалуйста, каковы последствия такой подмены, в каких случаях используется это условие?
А точнее, что такое громадное генерит этот SELF::, что сообщения не отправляются? На клиентские оповещения это же тоже распространяется??? Кошмар!
02 Октября 2014, 10:22:14
Ответ #14
  • Модератор
  • Ветеран
  • *****
  • Сообщений: 85943
  • Репутация: +25399/-0
  • Сообщество PrestaShop
    • Просмотр профиля