OpenCart 2: Настройка почты маилру в качестве отправителя
- Категория: Технические советы
- – Автор: Игорь (Администратор)
В скриптовом языке php есть такая замечательная функция отправки писем, как mail. И как справиться с ее настройкой и отправкой писем написано немало трудов в интернете, причем практически под все возможные случаи, включая все известные почтовые сервисы, такие как маилру.
Однако в связи с тем, что ее часто используют для рассылки спама при взломе сайта, обычно mail блокируют на хостингах и сайтах. Поэтому многие CMS, включая OpenCart 2, изворачиваются как могут, чтобы поддержать отправку почты в любом случае.
OpenCart 2 для решения этой проблемы использует собственный класс отправки писем. В связи с этим, периодически у владельцев сайтов возникают проблемы с отправкой писем. Так, например, настройка почты маилру весьма не очевидна. И данной статье я хочу рассказать о ряде нюансов. А для тех, кто спешит, сразу приведу картинку с настройками:
1. Начну, с первого важного момента. Ни в коем случае не видитесь на рекомендации формы. Почтовый протокол для отправки писем с маилру должен быть "SMTP", а не "MAIL". В последнем случае, при любых настройках, почта не отправляется, но так же и ошибки не отображаются.
2. Следующий момент. Поле параметры функции MAIL должно быть пустым. Вот тут рекомендации верные.
3. При указании почтового сервера "smtp.mail.ru" в обязательном порядке перед ним необходимо указывать префикс "ssl://". Без последнего почта отправляться не будет. В принципе, если смотреть в код, то только по этому признаку OpenCart понимает, что нужно использовать защищенное соединение. Однако, это весьма не очевидный момент, особенно для простых владельцев своих магазинов, так как в аналогах для этого есть специальное отдельное поле (выпадающий список).
4. Далее нужно указывать SMTP логин и пароль. Учтите, что любой лишний пробел в этих полях автоматом будет приводить к ошибке отправки писем. Если для пароля это логично, так как пробелы могут составлять сам пароль, то вот с логином это весьма странная ситуация.
5. Порт указываете 465.
6. При установке таймаута SMTP, значения 10 будет вполне достаточно.
Как видите, настройка почты для маилру имеет ряд нюансов. Однако, теперь, вы знаете как их решить.
Надеюсь, моя статья помогла вам сэкономить лишний час-два вашего времени в блуждании по интернету, а так же сохранить силы и главное нервы.
☕ Понравился обзор? Поделитесь с друзьями!
Комментарии / отзывы
Файл находится по следующему пути: system\library\mail.php
Если кому интересно, как была решена проблема с отправкой, то вот.
в классе 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);
}
Так же у вас есть один важный нюанс, в отправке вы используете функцию mail, которая на хостингах может быть вырезана из php.
в настройках магазина, изначально, был настроен протокол mail. Письма (заказы, регистрации) отправляются, но периодически попадают в паку спам (на gmail,например). Хотя при отправке, непосредственно, через вэб интерфейс mail.ru такого не происходит. Долго искал решение. И вот, вроде бы, нашел у Вас, но при выставлении всех настроек почта не отправляется совсем. Не подскажете - где искать проблему?
Во-первых. Проверьте, что указали корректные настройки. К примеру, лишние пробелы могут приводить к ошибкам - так уж сделано.
Во-вторых. Проверьте, что в настройках магазина указан соответствующий адрес.
В-третьих. Посмотрите логи, там должны быть указаны причины.
В-четвертых. Посмотрите для вашей версии интернет-магазина, вполне возможно, что просто кривой файл отправки писем (такое иногда бывает).