RizVN Login



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 будет вполне достаточно.

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

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

1 1 1 1 1 1 1 1 1 1 Рейтинг 5.00 (3 Голосов)

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

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" сохраняете, который нужно создать.
Ответить | Ответить с цитатой | Цитировать | Сообщить модератору

Добавить комментарий / отзыв

Комментарий - это вежливое и наполненное смыслом сообщение (правила).


Введите защитный код

Обновить
Защитный код

Каталог программ