Автор Тема: Ошибка отправки contact-form  (Прочитано 4826 раз)

31 Март 2016, 09:12:42
Ответ #15
  • Фрилансер
  • *
  • Сообщений: 160
  • Репутация: +5/-0
  • BSDA Certification
    • Просмотр профиля
Несколько дней не занимался вопросом, не до этого было.

В общем, действительно проблема с почтовиком, почтовик собственный.  Через WEB морду письма уходят и приходят, а вот ч-з Prestashop нет.  Отключил фильтры - заработало..... странно. В общем, проверю всё, отпишусь.
Только вот со временем напряжёнка.

 

15 Июнь 2016, 13:20:20
Ответ #16
  • Фрилансер
  • *
  • Сообщений: 160
  • Репутация: +5/-0
  • BSDA Certification
    • Просмотр профиля
Доброго всем ещё раз.

Недавно наткнулся на бесплатный сервис Mail.ru для бизнеса....... Судя по описанию, предложение интересное, DNS хостинг бесплатный, безразмерные ящики...
В общем, заинтересовало. Подумалось, собственный почтовик - не рационально, возни много да и ресурсы кушает хорошо.

Так вот, теперь пытаюсь настроить отправку почты ч-з Mail.ru. Не работает.

Отправка ч-з функцию mail() возвращает
Ошибка: пожалуйста проверьте настройки
Sending failed using mail() as PHP's default mail() function returned boolean FALSE.

т.е  FALSE возвращает этот кусок:
if (!ini_get("safe_mode")) $success = mail($to, $subject, $message, $headers, $params);
    else $success = mail($to, $subject, $message, $headers);

    if (!$success)
    {
      @ini_set("sendmail_from", $original_from);
      throw new Swift_ConnectionException("Sending failed using mail() as PHP's default mail() function returned boolean FALSE.");
    }

Лог:
[15-Jun-2016 04:07:39 Etc/GMT+6] mail() on [/tools/swift/Swift/Plugin/MailSend.php:159]: To: mail@mail.ru -- Headers: Return-Path: <contact@mydomain.com> From: contact@mydomain.com Reply-To: contact@mydomain.com Date: Wed, 15 Jun 2016 04:07:39 -0600 X-LibVersion: 3.3.2 MIME-Version: 1.0 Content-Type: text/html; charset=utf-8; format=flowed Content-Transfer-Encoding: quoted-printable Message-ID: <20160615100739.2578.503345369.swift@mydomain.com>

В info() функция email() не отключена
Вариант с редактированием скриптов http://www.inmotionhosting.com/support/edu/prestashop-15/349-php-mail-error   результата не дал.

+++++++++++++++

Через SMTP:
Параметры согласно инструкции mail.ru
Почтовый домен   пусто
Сервер SMTP  smtp.mail.ru
Имя пользователя SMTP  mail@mydomain.com
Пароль определён
Шифрование SSL
Порт 465

Ошибка
Ошибка: пожалуйста проверьте настройки
Expected response code(s) [250] but got response [503 sender not yet given]

Ящики отправки и получения рабочие, пароли верные.

++++++++++++++++++++++++++++++++++++++++++

Хотелось бы настроить отправку ч-з SMTP. Техподдержка просит протокол сессии, включая ответы их сервера.


В связи с этим,  ??
1) Может быть, проблема типичная и решена, но мне не удалось найти решение. Ткните.
2) Каким образом в Prestashop можно получить протокол SMTP сессии? Только сниффером? Но там обязательное шифрование......

15 Июнь 2016, 14:12:14
Ответ #17
  • Ветеран
  • *****
  • Сообщений: 22125
  • Репутация: +25303/-1
  • Prestashop - просто и эффективно
    • Просмотр профиля
Попробуй в классе Mail.php заменить
$smtp->setTimeout(20);      // можно увеличить до 30и изменить
$swift = new Swiftна
$swift =& new Swift
Эксперт Prestashop - решения всех проблем, написание модулей, создание тем для интернет-магазинов под Prestashop.
Эксперт Magento - создам сайт на Magento, программирование кастомных модулей для Magento, кастомизация тем Magento.
Лучшие цены!!!
15 Июнь 2016, 14:20:08
Ответ #18
  • Ветеран
  • *****
  • Сообщений: 16667
  • Репутация: +14630/-5
  • Сообщество PrestaShop
    • Просмотр профиля
15 Июнь 2016, 16:08:17
Ответ #19
  • Фрилансер
  • *
  • Сообщений: 160
  • Репутация: +5/-0
  • BSDA Certification
    • Просмотр профиля
PrestaMan

Не нашел класс, уточни где он.
15 Июнь 2016, 17:18:10
Ответ #20
  • Модератор
  • Ветеран
  • *****
  • Сообщений: 86688
  • Репутация: +25428/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Файлы классов находяться в:
/classes/
/override/classes/
16 Июнь 2016, 08:54:19
Ответ #21
  • Фрилансер
  • *
  • Сообщений: 160
  • Репутация: +5/-0
  • BSDA Certification
    • Просмотр профиля
DarinSr Спасибо.
PrestaMan
Внёс рекомендуемые изменения, код ошибки без изменений.

Буду сниффить, разбираться с ошибками сессии. Предвижу проблему с кодировками. К стати, можно каким-то образом запротоколировать SMTP сессию "родным" скриптом? То есть, добавить некий код в /tools/swift/Swift/Plugin/MailSend.php или в контроллер, чтоб получить вывод или файл с протоколом сессии?
16 Июнь 2016, 09:53:45
Ответ #22
  • Ветеран
  • *****
  • Сообщений: 16667
  • Репутация: +14630/-5
  • Сообщество PrestaShop
    • Просмотр профиля
Если проблемы с почтой на вашем сервере, то самый простой способ это пройти сессию телнетом. Дальше уже проверять очередь на релее.
Можно проверить файл логов smtp.log/mail.log, лишним не будет, конечно не обязательно в логе будет вся информация, но это регулируется настройкой логирования..
16 Июнь 2016, 10:10:51
Ответ #23
  • Фрилансер
  • *
  • Сообщений: 160
  • Репутация: +5/-0
  • BSDA Certification
    • Просмотр профиля
Adik

Почтовик не на моём сервере, на mail.ru. Отправка писем настраивается по SMTP ч-з авторизацию с шифрованием. МТА системы в процессе отправки не задействуется, отправляет скрипт Prestashop. Соответственно, системные логи почты пустые.  Лог отправки скрипта протоколирует только отправляемые заголовки.
Проверять сессию телнетом не вижу смысла - мне нужна сессия скрипта. Просто проверять работоспособность smtp.mail.ru  смысла нет. 
16 Июнь 2016, 10:25:38
Ответ #24
  • Ветеран
  • *****
  • Сообщений: 22125
  • Репутация: +25303/-1
  • Prestashop - просто и эффективно
    • Просмотр профиля
Лог:
[15-Jun-2016 04:07:39 Etc/GMT+6] mail() on [/tools/swift/Swift/Plugin/MailSend.php:159]: To: mail@mail.ru -- Headers: Return-Path: <contact@mydomain.com> From: contact@mydomain.com Reply-To: contact@mydomain.com Date: Wed, 15 Jun 2016 04:07:39 -0600 X-LibVersion: 3.3.2 MIME-Version: 1.0 Content-Type: text/html; charset=utf-8; format=flowed Content-Transfer-Encoding: quoted-printable Message-ID: <20160615100739.2578.503345369.swift@mydomain.com>
В info() функция email() не отключена
Вариант с редактированием скриптов http://www.inmotionhosting.com/support/edu/prestashop-15/349-php-mail-error   результата не дал.
Если в этом месте ошибка, то это проблема с заголовком отправки.  По идее решаться должна принудительным заполнением полей от, тема, параметры.
Еще были проблемы с несколькими адресами доставки, но их исправили в новой версии prestashop.
https://github.com/PrestaShop/PrestaShop/commit/789911184b72a2765a6faf39652506057350a021
Версия prestashop последняя?
Эксперт Prestashop - решения всех проблем, написание модулей, создание тем для интернет-магазинов под Prestashop.
Эксперт Magento - создам сайт на Magento, программирование кастомных модулей для Magento, кастомизация тем Magento.
Лучшие цены!!!
16 Июнь 2016, 10:28:59
Ответ #25
  • Ветеран
  • *****
  • Сообщений: 22125
  • Репутация: +25303/-1
  • Prestashop - просто и эффективно
    • Просмотр профиля
Попробуй сменить почтовый сервер. Потестируй с gmail. Если почта будет работать, то 100% что проблемы со стороны mail.ru и ты ничего у себя не сделаешь. А так только время зря тратить будешь.
Эксперт Prestashop - решения всех проблем, написание модулей, создание тем для интернет-магазинов под Prestashop.
Эксперт Magento - создам сайт на Magento, программирование кастомных модулей для Magento, кастомизация тем Magento.
Лучшие цены!!!
16 Июнь 2016, 12:46:53
Ответ #26
  • Фрилансер
  • *
  • Сообщений: 160
  • Репутация: +5/-0
  • BSDA Certification
    • Просмотр профиля
Gmail протестирован.
Ошибка
Authentication failed using username......Проблема в моей системе.

Куда и на что обратить свой взор ?

Чтоб понять, нужна вся сессия SMTP. Там обязательное шифрование, сниффить - будет абракадабра.
Нужно каким-то образом вывести сессию. (что-то вроде echo....) Отображать ошибки -  не информативно.

16 Июнь 2016, 15:17:31
Ответ #27
  • Модератор
  • Ветеран
  • *****
  • Сообщений: 86688
  • Репутация: +25428/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Сделайте проверку передаваемых данных.
$debug['contact->email'] = $contact->email;
$debug['contact->name'] = $contact->name;
// ... все переменные                   

echo '<xmp style="text-align: left;">';
print_r($debug);
echo '</xmp><br /><br /><br />';
return $debug;

if (empty($contact->email))
Все значения переменных письма сходяться с вашими почтовыми данными?

Тестовое сообщение из админки проходит? Какие ишибки показывает при тестовой отправки?
При тесте email происходит логирование ошибок, если есть ошибки, то покажет более детальную информацию.
16 Июнь 2016, 17:37:45
Ответ #28
  • Фрилансер
  • *
  • Сообщений: 160
  • Репутация: +5/-0
  • BSDA Certification
    • Просмотр профиля
DarinSr

Дело в том, что ошибка
Ошибка: пожалуйста проверьте настройки
Expected response code(s) [250] but got response [503 sender not yet given]

возвращается при отправке тестового сообщения. Отправка ч-з SMTP, логи пустые.
Сперва нужно добиться корректной отправки\приёма тестовых сообщений, а потом уже заниматься конроллером и формой отправки. Верно?
17 Июнь 2016, 11:53:04
Ответ #29
  • Ветеран
  • *****
  • Сообщений: 33325
  • Репутация: +26771/-0
    • Просмотр профиля
Сперва нужно добиться корректной отправки\приёма тестовых сообщений, а потом уже заниматься конроллером и формой отправки. Верно?
Верно. Тестовое сообщение зависит только от правильных настроек, а в контроллерах добавляются проблемы престы.
У одного клиента было такое. Gmail не принимал письма от сайта, причем DKIM, SPF и DMARC были настроены и нормально работали со всеми почтовиками.
Причина была в отсуствии обратной DNS записи. В суппорте google ответили, что обратная DNS запись более важна чем DKIM, SPF и без ее правльной настройки отправление не будет принято серверам google. С mail.ru такая же проблема.