RizVN Login



OpenCart 2: Как отправить электронное письмо на почту (код)

OpenCart 2: Как отправить электронное письмо на почту (код)В одной из прошлый статей я уже упоминал, что для отправки электронных писем OpenCart 2 использует собственный класс Mail. Сделано это для того, чтобы поддержать функциональность уведомлений практически на любых хостингах. Так, к примеру, на ряде хостингов стандартная функция php под названием mail вырезана из самого интерпретатора. Сделано это в целях борьбы со спамом на слобозащищенных движках и сайтах, которые после взлома используются для отправки миллионов этих замечательных и увлекательных писем.

Продолжая, к сожалению, в движке OpenCart нет упрощенного варианта отсылки почты, несмотря на то, что большинство настроек берутся из конфигов и практически не отличаются от модуля к модуля. Вам необходимо полностью самим заполнять этот класс. И благо, это не такое сложное занятие, тем более, что подобного рода обертку достаточно написать один раз.

Примечание: Стоит понимать, что есть некоторая неопределенность, когда у вас несколько магазинов на одном движке. Но, и в этом случае можно было бы использовать упрощенный вариант, в который бы просто передавался текущий активный магазин.

Вот, собственно, сам необходимый код:

<?php
// Создаем объект для отсылки
$mail = new Mail();
// Получаем из настроек протокол MAIL/SMTP
$mail->protocol = $this->config->get('config_mail_protocol');
// Копируем параметры
$mail->parameter = $this->config->get('config_mail_parameter');
// Указываем smtp сервер
$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');
// Указываем получателя
$mail->setTo('%user_email%');
// Указываем из настроек email
$mail->setFrom($this->config->get('config_email'));
// Указываем из настроек имя владельца сайта
$mail->setSender($this->config->get('config_name'));
// Указываем заголовок в UTF-8
$mail->setSubject(html_entity_decode(
    ' Заголовок письма (например, уведомление) ' ,
    ENT_QUOTES, 
    'UTF-8')
);
// Формируем html тело сообщения
$sended_message = html_entity_decode(
    'Здравствуйте, ' 
        . '<br/><br/>'
        . 'Вам письмо с сайта "' . $this->config->get('config_name')
        . '<br/><br/>'
    . 'Отправлено с сайта ' . $this->config->get('config_name')
    , 
    ENT_QUOTES, 
    'UTF-8'
);
// Указываем само сообщение
$mail->setHtml($sended_message);
// Отправляем письмо
$mail->send(); 

Как видите, в основном код посвящен тому, чтобы передать в класс Mail все необходимые параметры из стандартных конфигов. Так что, в принципе, вы можете взять эту заготовку и поместить ее в отдельную функцию и передавать только адрес получателя, заголовок и само сообщение. В некотором роде, получится замена привычной функции php mail.

Теперь, вы знаете как отправлять электронные письма из контроллеров модулей и вам не придется писать с нуля большую простыню кода.

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

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

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


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

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

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