OpenCart является одним из популярных движков на которых можно за короткое время развернуть полноценный интернет магазин. Современный интернет-магазин сложно представить без функции отправки почтовых сообщений. Почтовые сообщения позволяют получать различные уведомления как владельцам сайта, так и покупателям. В свою очередь побуждая их к проявлению нужной активности и не только.
В данном посту мы рассмотрим пример отправки почтовых сообщений через свои скрипты. В системе OpenCart существует базовый набор самых необходимых почтовых уведомлений. Эти почтовые уведомления как правило прописаны в самих модулях. В некоторых ситуациях бывает необходимо сделать самостоятельную отправку письма. Рассмотрим простой пример, как можно отправить своё почтовое сообщение на какой-либо адрес в OpenCart 2.3.
Разделить процесс отправки для наглядности можно на два этапа. Первый – мы задаем основные настройки подключения к самому серверу почты.
// создаём объект класса Mail
$mail = new Mail();
// почтовый протокол
$mail->protocol = $this->config->get('config_mail_protocol');
// доп параметр
$mail->parameter = $this->config->get('config_mail_parameter');
// хост почтового сервера
$mail->smtp_hostname = $this->config->get('config_mail_smtp_hostname');
// аккаунт на почте
$mail->smtp_username = $this->config->get('config_mail_smtp_username');
// пароль на почте
$mail->smtp_password = html_entity_decode($this->config->get('config_mail_smtp_password'), ENT_QUOTES, 'UTF-8');
// порт
$mail->smtp_port = $this->config->get('config_mail_smtp_port');
// лимиты времени отправки
$mail->smtp_timeout = $this->config->get('config_mail_smtp_timeout');
Практически все параметры типичны для всех почтовых серверов. Если вам приходилось до этого настраивать почту, то думаю с ними вам будет и так всё понятно. Кроме того, большинство параметров берутся из настроек самого сайта и менять в этом случае нет необходимости. Второй этап – формирования самого почтового сообщения:
// Email-адрес получателя письма
$mail->setTo($order_info['email']);
// email-отправителя
$mail->setFrom($this->config->get('config_email'));
// имя отправителя
$mail->setSender(html_entity_decode($order_info['store_name'], ENT_QUOTES, 'UTF-8'));
// тема письма
$mail->setSubject(html_entity_decode($subject, ENT_QUOTES, 'UTF-8'));
// почтовый шаблон (подключается вид mail/order)
$mail->setHtml($this->load->view('mail/order', $data));
// текст сообщения
$mail->setText($text);
// отправка
$mail->send();
Как можно заметить из кода, большинство параметров достаются из самих настроек сайта, посредством метода $this->config->get(). В большинстве случаев менять параметры подключения в данном коде не нужно. Т.к. если они прописаны в настройках сайта, они так же будут использованы и в этом коде. Получается вам предстоит лишь настроить лишь поля, которые заданы на втором этапе (указать получателя, тему, и само сообщение).
После того как все параметры заданы, инициализация отправки происходит посредством использования метода send(). Данный метод выполнит попытку подключения к почтовому серверу, после чего отправит само письмо. Таким образом вы можете отправлять произвольные письма из кода контроллеров и модулей.
Если письма не уходят, то стоит обратить внимание на почтовые настройки самого сайта. Убедиться в том, что почта настроена верно, и другие стандартные письма отправляются исправно. Довольно часто бывает так что требуется обратиться в самому хостеру, чтобы они вам помогли с настройками почтового сервера, со своей стороны. Это делается в том случае, когда почта вся настроена, но письма все-равно не уходят по причине политики безопасности сервера.
На этом всё, всем удачи!