avatar

Отправка писем через SMTP

Опубликовал в блог Дополнения и модули для Simpla CMS
0
случается в жизни что перестают приходить оповещения на почту в simpla внезапно, а точно работающего решения особо нет, где-то то ошибка, то белый экран… в этом решении все работает 100%

Для начала зальем содержимое архива в корень

потом в api/Notify.php ищем
function email($to, $subject, $message, $from = '', $reply_to = '') {

и содержимое этой функции меняем на:
if (!$this->config->phpmailer_enable) {
            $headers = "MIME-Version: 1.0\n";
            $headers .= "Content-type: text/html; charset=utf-8; \r\n";
            $headers .= "From: $from\r\n";
            if (!empty($reply_to))
                $headers .= "reply-to: $reply_to\r\n";

            $subject = "=?utf-8?B?" . base64_encode($subject) . "?=";

            @mail($to, $subject, $message, $headers);
        } else {
            require_once 'Phpmailer/Phpmailer.php';

            $mailer = new Phpmailer();

            $mailer->IsHTML(true);
            $mailer->SMTPDebug = 0;
            $mailer->CharSet = "utf-8";

            $mailer->IsSMTP();
            $mailer->Host = $this->config->phpmailer_host;
            $mailer->Port = $this->config->phpmailer_port;

            if ($this->config->phpmailer_ssl == true) {
                $mailer->SMTPSecure = "ssl";
            }

            $mailer->SMTPAuth = true;
            $mailer->Username = $this->config->phpmailer_user;
            $mailer->Password = $this->config->phpmailer_password;


            $mailer->AddAddress($to);
            $mailer->From = $mailer->Username; // $from
$mailer->FromName = "Интернет магазин";
$mailer->Sender = $mailer->Username;
            $mailer->Subject = $subject;
            $mailer->Body = $message;
            
            $mailer->Send();
        }
    }


Вместо «Интернет магазин» напишите название своего магазина

В итоге это выглядит так:
function email($to, $subject, $message, $from = '', $reply_to = '') {
        if (!$this->config->phpmailer_enable) {
            $headers = "MIME-Version: 1.0\n";
            $headers .= "Content-type: text/html; charset=utf-8; \r\n";
            $headers .= "From: $from\r\n";
            if (!empty($reply_to))
                $headers .= "reply-to: $reply_to\r\n";

            $subject = "=?utf-8?B?" . base64_encode($subject) . "?=";

            @mail($to, $subject, $message, $headers);
        } else {
            require_once 'Phpmailer/Phpmailer.php';

            $mailer = new Phpmailer();

            $mailer->IsHTML(true);
            $mailer->SMTPDebug = 0;
            $mailer->CharSet = "utf-8";

            $mailer->IsSMTP();
            $mailer->Host = $this->config->phpmailer_host;
            $mailer->Port = $this->config->phpmailer_port;

            if ($this->config->phpmailer_ssl == true) {
                $mailer->SMTPSecure = "ssl";
            }

            $mailer->SMTPAuth = true;
            $mailer->Username = $this->config->phpmailer_user;
            $mailer->Password = $this->config->phpmailer_password;


            $mailer->AddAddress($to);
            $mailer->From = $mailer->Username; // $from
$mailer->FromName = "Магазин Воздуха";
$mailer->Sender = $mailer->Username;
            $mailer->Subject = $subject;
            $mailer->Body = $message;
            
            $mailer->Send();
        }
    }


далее config/config.php добавить секцию:
[phpmailer]
phpmailer_enable = true;
phpmailer_host = 'smtp.yandex.ru';
phpmailer_port = 465;
phpmailer_user = 'email';
phpmailer_password = 'pass';
phpmailer_ssl = true;


где email это ваше_мыло@yandex.ru а pass эт пароль.

Но лично я сделал смтп через почту на хостинге так:
[phpmailer]
phpmailer_enable = true;
phpmailer_host = 'smtp.napareno.ru';
phpmailer_port = 465;
phpmailer_user = 'info@napareno.ru';
phpmailer_password = 'пароль тут';
phpmailer_ssl = true;


делалось на сайте napareno.ru
0 комментариев RSS
Нет комментариев
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.