Ошибка отправки contact-form

Автор BSD-shnik, 12 марта 2016, 08:36:31

« назад - далее »

BSD-shnik

Несколько дней не занимался вопросом, не до этого было.

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

 


BSD-shnik

#16
Доброго всем ещё раз.

Недавно наткнулся на бесплатный сервис 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 сессии? Только сниффером? Но там обязательное шифрование......


PrestaMan

Попробуй в классе Mail.php заменить
$smtp->setTimeout(20);      // можно увеличить до 30
и изменить
$swift = new Swift
на
$swift =& new Swift
Эксперт Prestashop - решения всех проблем, написание модулей, создание тем для интернет-магазинов под Prestashop.
Эксперт Magento - создам сайт на Magento, программирование кастомных модулей для Magento, кастомизация тем Magento.
Лучшие цены!!!


BSD-shnik

PrestaMan

Не нашел класс, уточни где он.

DarinSr

Файлы классов находяться в:
/classes/
/override/classes/

BSD-shnik

#21
DarinSr Спасибо.
PrestaMan
Внёс рекомендуемые изменения, код ошибки без изменений.

Буду сниффить, разбираться с ошибками сессии. Предвижу проблему с кодировками. К стати, можно каким-то образом запротоколировать SMTP сессию "родным" скриптом? То есть, добавить некий код в /tools/swift/Swift/Plugin/MailSend.php или в контроллер, чтоб получить вывод или файл с протоколом сессии?

Adik

Если проблемы с почтой на вашем сервере, то самый простой способ это пройти сессию телнетом. Дальше уже проверять очередь на релее.
Можно проверить файл логов smtp.log/mail.log, лишним не будет, конечно не обязательно в логе будет вся информация, но это регулируется настройкой логирования..

BSD-shnik

#23
Adik

Почтовик не на моём сервере, на mail.ru. Отправка писем настраивается по SMTP ч-з авторизацию с шифрованием. МТА системы в процессе отправки не задействуется, отправляет скрипт Prestashop. Соответственно, системные логи почты пустые.  Лог отправки скрипта протоколирует только отправляемые заголовки.
Проверять сессию телнетом не вижу смысла - мне нужна сессия скрипта. Просто проверять работоспособность smtp.mail.ru  смысла нет. 

PrestaMan

Цитата: BSD-shnik от 15 июня 2016, 13:20:20
Лог:
[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.
Лучшие цены!!!

PrestaMan

Попробуй сменить почтовый сервер. Потестируй с gmail. Если почта будет работать, то 100% что проблемы со стороны mail.ru и ты ничего у себя не сделаешь. А так только время зря тратить будешь.
Эксперт Prestashop - решения всех проблем, написание модулей, создание тем для интернет-магазинов под Prestashop.
Эксперт Magento - создам сайт на Magento, программирование кастомных модулей для Magento, кастомизация тем Magento.
Лучшие цены!!!

BSD-shnik

#26
Gmail протестирован.
Ошибка
Authentication failed using username......
Проблема в моей системе.

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

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


DarinSr

#27
Цитата: Виталий от 25 марта 2016, 14:26:47
Сделайте проверку передаваемых данных.
$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 происходит логирование ошибок, если есть ошибки, то покажет более детальную информацию.

BSD-shnik

DarinSr

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


возвращается при отправке тестового сообщения. Отправка ч-з SMTP, логи пустые.
Сперва нужно добиться корректной отправки\приёма тестовых сообщений, а потом уже заниматься конроллером и формой отправки. Верно?

coder

Цитата: BSD-shnik от 16 июня 2016, 17:37:45
Сперва нужно добиться корректной отправки\приёма тестовых сообщений, а потом уже заниматься конроллером и формой отправки. Верно?
Верно. Тестовое сообщение зависит только от правильных настроек, а в контроллерах добавляются проблемы престы.
У одного клиента было такое. Gmail не принимал письма от сайта, причем DKIM, SPF и DMARC были настроены и нормально работали со всеми почтовиками.
Причина была в отсуствии обратной DNS записи. В суппорте google ответили, что обратная DNS запись более важна чем DKIM, SPF и без ее правльной настройки отправление не будет принято серверам google. С mail.ru такая же проблема.