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(). Данный метод выполнит попытку подключения к почтовому серверу, после чего отправит само письмо. Таким образом вы можете отправлять произвольные письма из кода контроллеров и модулей.
Если письма не уходят, то стоит обратить внимание на почтовые настройки самого сайта. Убедиться в том, что почта настроена верно, и другие стандартные письма отправляются исправно. Довольно часто бывает так что требуется обратиться в самому хостеру, чтобы они вам помогли с настройками почтового сервера, со своей стороны. Это делается в том случае, когда почта вся настроена, но письма все-равно не уходят по причине политики безопасности сервера.
На этом всё, всем удачи!