OpenCart 2: Настройка почты маилру в качестве отправителя

OpenCart 2: Настройка почты маилру в качестве отправителя

OpenCart 2: Настройка почты маилру в качестве отправителяВ скриптовом языке php есть такая замечательная функция отправки писем, как mail. И как справиться с ее настройкой и отправкой писем написано немало трудов в интернете, причем практически под все возможные случаи, включая все известные почтовые сервисы, такие как маилру.

Однако в связи с тем, что ее часто используют для рассылки спама при взломе сайта, обычно mail блокируют на хостингах и сайтах. Поэтому многие CMS, включая OpenCart 2, изворачиваются как могут, чтобы поддержать отправку почты в любом случае.

OpenCart 2 для решения этой проблемы использует собственный класс отправки писем. В связи с этим, периодически у владельцев сайтов возникают проблемы с отправкой писем. Так, например, настройка почты маилру весьма не очевидна. И данной статье я хочу рассказать о ряде нюансов. А для тех, кто спешит, сразу приведу картинку с настройками:

OpenCart 2: Настройка почты маилру в качестве отправителя

1. Начну, с первого важного момента. Ни в коем случае не видитесь на рекомендации формы. Почтовый протокол для отправки писем с маилру должен быть "SMTP", а не "MAIL". В последнем случае, при любых настройках, почта не отправляется, но так же и ошибки не отображаются.

2. Следующий момент. Поле параметры функции MAIL должно быть пустым. Вот тут рекомендации верные.

3. При указании почтового сервера "smtp.mail.ru" в обязательном порядке перед ним необходимо указывать префикс "ssl://". Без последнего почта отправляться не будет. В принципе, если смотреть в код, то только по этому признаку OpenCart понимает, что нужно использовать защищенное соединение. Однако, это весьма не очевидный момент, особенно для простых владельцев своих магазинов, так как в аналогах для этого есть специальное отдельное поле (выпадающий список).

4. Далее нужно указывать SMTP логин и пароль. Учтите, что любой лишний пробел в этих полях автоматом будет приводить к ошибке отправки писем. Если для пароля это логично, так как пробелы могут составлять сам пароль, то вот с логином это весьма странная ситуация.

5. Порт указываете 465.

6. При установке таймаута SMTP, значения 10 будет вполне достаточно.

Как видите, настройка почты для маилру имеет ряд нюансов. Однако, теперь, вы знаете как их решить.

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

Социальные сети

☕ Понравился обзор? Поделитесь с друзьями!

Комментарии / отзывы  

0 # Андрей 26.08.2016 01:41
Спасибо за статью! Я уже столько времени мучаюсь с отправкой... После установки настроек наконец смог получить письма о заказе.
Ответить | Ответить с цитатой | Цитировать | Сообщить модератору
0 # Артем 11.12.2016 13:57
Добрый день! А не подскажете, в каком именно файле описан класс mail? Спасибо.
Ответить | Ответить с цитатой | Цитировать | Сообщить модератору
0 # Игорь (Администратор) 13.12.2016 00:54
Здравствуйте

Файл находится по следующему пути: system\library\mail.php
Ответить | Ответить с цитатой | Цитировать | Сообщить модератору
0 # Артем 13.12.2016 08:37
Добрый день! Спасибо за ответ!
Если кому интересно, как была решена проблема с отправкой, то вот.

в классе mail добавил еще один метод
/system/library/mail.php

public function getHtml() {
return $this->html;
}

Это чтобы тело письма можно было вытащить туда, куда тебе нужно из обьекта.

Потом поставил модуль fastorder

и уже в нем изменил метод отправки
/catalog/controller/product/fastorder.php

в конце метода sender() добавляем свой метод отправки

aa_mail($mail->getHtml()); // помните мы метод добавляли в классе? вот ждя этого он нам и нужен был

и далее сама функция отправки (заморачиваться с классами не стал, уж извините)



function aa_mail($mail_message) {

@$message = $mail_message;
@$filename = date('d-m-Y_H_i_s').'.html';
@file_put_contents($_SERVER['DOCUMENT_ROOT'].'/dumps/'.$filename.'', $message);

$to= "Artem " . ", " ;
$to .= "Sergey ";
$subject = "Сайт - отправка заказов онлайн";

$message = mb_convert_encoding($message, 'windows-1251', mb_detect_encoding($message));
$headers= "MIME-Version: 1.0\r\n";
$headers .= "Content-type: text/html; charset=windows-1251\r\n";
$headers .= "From: сайт \r\n";

$res = mail($to, $subject, $message, $headers);


}
Ответить | Ответить с цитатой | Цитировать | Сообщить модератору
0 # Игорь (Администратор) 13.12.2016 23:37
Так вы решили проблему не в целом по сайту, а для конкретного модуля.

Так же у вас есть один важный нюанс, в отправке вы используете функцию mail, которая на хостингах может быть вырезана из php.
Ответить | Ответить с цитатой | Цитировать | Сообщить модератору
0 # Игорь (Администратор) 13.12.2016 23:39
Тем не менее, кому-то может пригодится. Кроме того, как вижу, вы еще каждое отдельное письмо в каталог "dumps" сохраняете, который нужно создать.
Ответить | Ответить с цитатой | Цитировать | Сообщить модератору
0 # Александр-557 05.03.2018 17:48
Спасибо огромное! Этот метод единственный помог.
Ответить | Ответить с цитатой | Цитировать | Сообщить модератору
0 # Игорь Верзилин 23.07.2018 13:13
Здравствуйте,
в настройках магазина, изначально, был настроен протокол mail. Письма (заказы, регистрации) отправляются, но периодически попадают в паку спам (на gmail,например). Хотя при отправке, непосредственно, через вэб интерфейс mail.ru такого не происходит. Долго искал решение. И вот, вроде бы, нашел у Вас, но при выставлении всех настроек почта не отправляется совсем. Не подскажете - где искать проблему?
Ответить | Ответить с цитатой | Цитировать | Сообщить модератору
0 # Игорь (Администратор) 23.07.2018 18:18
Здравствуйте
Во-первых. Проверьте, что указали корректные настройки. К примеру, лишние пробелы могут приводить к ошибкам - так уж сделано.
Во-вторых. Проверьте, что в настройках магазина указан соответствующий адрес.
В-третьих. Посмотрите логи, там должны быть указаны причины.
В-четвертых. Посмотрите для вашей версии интернет-магазина, вполне возможно, что просто кривой файл отправки писем (такое иногда бывает).
Ответить | Ответить с цитатой | Цитировать | Сообщить модератору
0 # Игорь Верзилин 23.07.2018 18:28
Спасибо за оперативный ответ. 1 и 2 пункты точно в порядке - проверял неоднократно. Возможно, пункт 4. Версия ocStore 2.3.0.2.3 Но я, к сожалению, не разбираюсь в этом. Пока решил проблему переносом почты на сервер хостинга. Все норм по SMTP Письма на Gmail приходят без красного вопросительного знака.
Ответить | Ответить с цитатой | Цитировать | Сообщить модератору
0 # Игорь (Администратор) 23.07.2018 19:21
Пожалуйста. Логи нужно смотреть или искать копию файла, где нет таких проблем.
Ответить | Ответить с цитатой | Цитировать | Сообщить модератору
0 # Вячеслав 20.10.2018 10:08
Спасибо! Все круто!
Ответить | Ответить с цитатой | Цитировать | Сообщить модератору
Добавить комментарий / отзыв
Комментарий - это вежливое и наполненное смыслом сообщение (правила).



* Нажимая на кнопку "Отправить", Вы соглашаетесь с политикой конфиденциальности.
Социальные сети
Программы (Freeware, OpenSource...)