Vall Posted April 26, 2014 Share Posted April 26, 2014 (edited) Добрый день. Presta 1.5.6.1. Больше месяца воюю с такой проблемой - не отправляются письма некоторым клиентам, не находил никакой закономерности, по какой причине одним письма доходят, другим нет. Сама преста не выдает никаких сообщений ушло письмо клиенту или нет, за исключением отправки номера отслеживания посылки. Именно там я видел "Ошибка отправки email клиенту" и мог понять каким клиентам уходит а каким нет. После долгих экспериментов я нашел!!! Если длина Имени и Фамилии c пробелом между ними превышает длину 23 символа - письмо не уходит, как только до 23 включительно, то отправляется без проблем. Отсюда вопрос КАК ИСПРАВИТЬ? Где можно изменить эти ограничения? Edited April 27, 2014 by Vall (see edit history) Link to comment Share on other sites More sharing options...
Dzianis Yurevich Posted April 28, 2014 Share Posted April 28, 2014 Может письма доходят, но попадают клиентам в спам? Если причина 100% в длине строки, то длину можно проверить в переменной $to_name в методе Send класса Mail. Еще проблема может быть в конфигах сервера. Вряд ли это из-за престы Link to comment Share on other sites More sharing options...
Vall Posted April 28, 2014 Author Share Posted April 28, 2014 Может письма доходят, но попадают клиентам в спам? Если причина 100% в длине строки, то длину можно проверить в переменной $to_name в методе Send класса Mail. Еще проблема может быть в конфигах сервера. Вряд ли это из-за престы Дело не в спаме. Через SMTP письма доходили, но хостинг из соображений безопасности закрыл SMTP. настроил php mail - всё работало, но случайно заметил, что не всем доходят письма. Бадался с хостонгом, но создали тестовый скрипт masite.by/test.php с указанием поля from: длинное имя на русском языке, вроди всё проходит, и хостинг сказал - ищите ограничения при отправке через php mail Скрипт такой: <?php $to = 'Длиииинное Руссскоеее Имяяяя Фамилияяяяяя <[email protected]>'; $subject = 'the subject'; $message = 'test-mail'; $headers = 'From: Оченььььь Длиииинное Руссскоеее Имяяяя Фамилияяяяяя <[email protected]>' . "\r\n" . 'Content-Type: text/html; charset=UTF-8' . "\r\n"; mail($to, $subject, $message, $headers); ?> Правильный ли скрипт для проверки Если всё правильно, то где искать эти возможные ограничения. На своем компьютере на Денвере всё работает, а на хостинге нет Link to comment Share on other sites More sharing options...
kaic Posted May 14, 2014 Share Posted May 14, 2014 (edited) Привет, у меня такая же проблема с Prestashop 1.5.6.2 При регистрации клиента с кириллицы длины имени и фамилии более 6 символов не отправлять электронную почту , чтобы " Подтверждение заказа ", но только " Подготовка продолжается " . Не Назовите Никки Нико- не проблема, имя Николаи Николов не посылает подтверждение по электронной почте заказ, а лишь «Подготовка продолжается " . Если клиент регистрируется на английском, без проблем. Было установлено, что проблема заключается в число символов в кириллице. После многих сделанные образцы обнаружил, что проблема исходит только от длины имени пользователя. Возможно, это ошибка в Prestashop 1.5.6.2 для 1.5.3 , потому что нет такой проблемы нет . Пожалуйста, если вы знаете, KAKK я могу решить эту проблему , чтобы разделить. Большое спасибо . Edited May 14, 2014 by kaic (see edit history) Link to comment Share on other sites More sharing options...
Vall Posted May 14, 2014 Author Share Posted May 14, 2014 Проблему решил так - значениям поля "кому" в исходящих письма вместо "Фамилия Имя" присвоил "пробел" ( $to_name = ' ')т.к. Фамилия и Имя всегда пишется в теле письма, то дублировать его в поле "кому" в принципе не обязательно. Если устраивает мое решение проблемы могу отправить вам свой отредактированный mail.php 1 Link to comment Share on other sites More sharing options...
kaic Posted May 14, 2014 Share Posted May 14, 2014 Проблему решил так - значениям поля "кому" в исходящих письма вместо "Фамилия Имя" присвоил "пробел" ( $to_name = ' ') т.к. Фамилия и Имя всегда пишется в теле письма, то дублировать его в поле "кому" в принципе не обязательно. Если устраивает мое решение проблемы могу отправить вам свой отредактированный mail.php Большое спасибо моим другом Vall, с Все прекрасно теперь работает с длинными именами на кириллице. Я очень рад и счастлив с вашей помощью. Еще раз спасибо. Будьте здоровы! Link to comment Share on other sites More sharing options...
min7 Posted May 26, 2014 Share Posted May 26, 2014 Подскажите, где именно нужно присвоить пробел? Link to comment Share on other sites More sharing options...
Vall Posted May 27, 2014 Author Share Posted May 27, 2014 В файле /classes/mail.php вместо $to_name = $to; и $to_name = $addr; написать $to_name = ''; и скрыть лишние условия. Вот часть mail.php с изменениями /* Construct multiple recipients list if needed */ $to_list = new Swift_RecipientList(); if (is_array($to) && isset($to)) { foreach ($to as $key => $addr) { $addr = trim($addr); if (!Validate::isEmail($addr)) { Tools::dieOrLog(Tools::displayError('Error: invalid e-mail address'), $die); return false; } if ($to_name == null || $to_name == $to) $to_name = ''; else $to_name = ''; /*else { if (function_exists('mb_encode_mimeheader')) $to_name = mb_encode_mimeheader($to_name, 'utf-8'); else $to_name = self::mimeEncode($to_name); }*/ $to_list->addTo($addr, $to_name); } $to_plugin = $to[0]; } else { /* Simple recipient, one address */ $to_plugin = $to; if ($to_name == null || $to_name == $to) $to_name = ''; else $to_name = ''; /*{ if (function_exists('mb_encode_mimeheader')) $to_name = mb_encode_mimeheader($to_name, 'utf-8'); else $to_name = self::mimeEncode($to_name); }*/ $to_list->addTo($to, $to_name); } Link to comment Share on other sites More sharing options...
Kerm Posted May 27, 2014 Share Posted May 27, 2014 Такой вариант просто уберет из-за заголовка инфу на какой адрес и на чье имя отправляется письмо. Т.е. в почтовике клиент увидит в поле кому, просто свой почтовый адрес, а так было бы Кому: "Евгений Иванов <[email protected]>;" Link to comment Share on other sites More sharing options...
Vall Posted May 27, 2014 Author Share Posted May 27, 2014 Да, но у меня была проблема, если имя и фамилия длиннее 22 символов, то prestashop выдавал ошибку и не отправлял письма. Для меня это не имеет значения т. к. Фамилия и Имя всегда пишется в теле письма Link to comment Share on other sites More sharing options...
Kerm Posted May 27, 2014 Share Posted May 27, 2014 А что мешало в php использовать substr и обрезать текст до 22х символов? Link to comment Share on other sites More sharing options...
Vall Posted May 27, 2014 Author Share Posted May 27, 2014 Я не силен в php. Главное - проблема решена. Если не трудно - подскажите на примере как использовать substr, я у себя поправлю. Link to comment Share on other sites More sharing options...
Dzianis Yurevich Posted May 27, 2014 Share Posted May 27, 2014 Я не силен в php. Главное - проблема решена. Если не трудно - подскажите на примере как использовать substr, я у себя поправлю. http://www.php.su/functions/?substr Link to comment Share on other sites More sharing options...
min7 Posted May 27, 2014 Share Posted May 27, 2014 Спасибо, Vall, всё получилось. Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now