Jump to content

Отправка писем с уведомлением клиенту


Vall

Recommended Posts

Добрый день. Presta 1.5.6.1.  Больше месяца воюю с такой проблемой - не отправляются письма некоторым клиентам, не находил никакой закономерности, по какой причине одним письма доходят, другим нет. Сама преста не выдает никаких сообщений ушло письмо клиенту или нет,  за исключением отправки номера отслеживания посылки. Именно там я видел "Ошибка отправки email клиенту" и мог понять каким клиентам уходит а каким нет. После долгих экспериментов я нашел!!!  Если длина Имени и Фамилии c пробелом между ними превышает длину 23 символа - письмо не уходит, как только до 23 включительно, то отправляется без проблем. Отсюда вопрос КАК ИСПРАВИТЬ? Где можно изменить эти ограничения?

Edited by Vall (see edit history)
Link to comment
Share on other sites

Может письма доходят, но попадают клиентам в спам?

Если причина 100% в длине  строки, то длину можно проверить в переменной $to_name в методе Send класса Mail.

Еще проблема может быть в конфигах сервера. Вряд ли это из-за престы

Link to comment
Share on other sites

Может письма доходят, но попадают клиентам в спам?

Если причина 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

  • 3 weeks later...
Привет, у меня такая же проблема с Prestashop 1.5.6.2

При регистрации клиента с кириллицы длины имени и фамилии более 6 символов не отправлять электронную почту , чтобы " Подтверждение заказа ", но только " Подготовка продолжается " .

Не Назовите Никки Нико- не проблема, имя Николаи Николов не посылает подтверждение по электронной почте заказ, а лишь «Подготовка продолжается " .

Если клиент регистрируется на английском, без проблем.

Было установлено, что проблема заключается в число символов в кириллице.

После многих сделанные образцы обнаружил, что проблема исходит только от длины имени пользователя. Возможно, это ошибка в Prestashop 1.5.6.2 для 1.5.3 , потому что нет такой проблемы нет .

Пожалуйста, если вы знаете, KAKK я могу решить эту проблему , чтобы разделить.

Большое спасибо .

Edited by kaic (see edit history)
Link to comment
Share on other sites

Проблему решил так - значениям поля "кому" в исходящих письма вместо "Фамилия Имя"  присвоил "пробел"  ( $to_name = ' ')
т.к. Фамилия и Имя всегда пишется в теле письма, то дублировать его в поле "кому" в принципе не обязательно.

Если устраивает мое решение проблемы могу отправить вам свой отредактированный mail.php

  • Like 1
Link to comment
Share on other sites

Проблему решил так - значениям поля "кому" в исходящих письма вместо "Фамилия Имя"  присвоил "пробел"  ( $to_name = ' ')

т.к. Фамилия и Имя всегда пишется в теле письма, то дублировать его в поле "кому" в принципе не обязательно.

Если устраивает мое решение проблемы могу отправить вам свой отредактированный mail.php

Большое спасибо моим другом Vall, с Все прекрасно теперь работает с длинными именами на кириллице. Я очень рад и счастлив с вашей помощью. 
Еще раз спасибо. 
Будьте здоровы!
Link to comment
Share on other sites

  • 2 weeks later...

В файле  /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

Такой вариант просто уберет из-за заголовка инфу на какой адрес и на чье имя отправляется письмо. Т.е. в почтовике клиент увидит в поле кому, просто свой почтовый адрес, а так было бы Кому: "Евгений Иванов <[email protected]>;"

Link to comment
Share on other sites

Да, но у меня была проблема, если имя и фамилия длиннее 22 символов, то prestashop выдавал ошибку и не отправлял письма. 

Для меня это не имеет значения т. к. Фамилия и Имя всегда пишется в теле письма

Link to comment
Share on other sites

Я не силен в php. Главное - проблема решена.

Если не трудно - подскажите на примере как использовать substr, я у себя поправлю.

Link to comment
Share on other sites

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...