Перейти к содержанию
Официальный форум поддержки Simpla

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


Перейти к решению Решено n0a,

Рекомендуемые сообщения

  • Ответов 57
  • Дата создания
  • Последний ответ

Лучшие авторы в теме

Лучшие авторы в теме

  • 3 месяца спустя...

ДД! Фрилансеры, не подскажите с данным модулем? Когда захожу в заказ, и жму - уведомить покупателя, далее вылезает ошибка: SMTP Error: Could not connect to SMTP host. Не может законектить в хосту

 

Что делаю:

 

1. Скачал прикрепленный файл, и кинул в корень сайта

2. В config/config.php, добавил: 

[phpmailer]
phpmailer_enable = true;
phpmailer_host = 'ssl://smtp.yandex.ru';
phpmailer_port = 465;
phpmailer_user = 'login@yandex.ru';
phpmailer_password = 'password';
phpmailer_ssl = true;

Пробовал менять по разному настройки, и без ssl, и порт менял и т.д.

 

3. Далее в файле api/Notify.php, как посоветовали выше, пробовал менять на:

$mailer->From = $mailer->Username; // $from
$mailer->FromName = "robot";
$mailer->Sender = $mailer->Username;

 

также, оставлял все по дефолту.

 

Результат один: SMTP Error: Could not connect to SMTP host

 

Ссылка на сообщение
Поделиться на другие сайты
  • 1 месяц спустя...

а можете выложить отдельно изменения notify.php? у меня он сильно нестандартный уже, просто заменить не получится

Ссылка на сообщение
Поделиться на другие сайты

а можете выложить отдельно изменения notify.php? у меня он сильно нестандартный уже, просто заменить не получится

 

нужно скопировать и заменить первую ф-ю function email

Ссылка на сообщение
Поделиться на другие сайты

Спасибо! работает

 

только почему-то не отправляются письма клиентам, пишет что неверный адрес хотя пробовал разные http://take.ms/82Qkq

возможно причина не в этой доработке но интересно бы найти ее

Ссылка на сообщение
Поделиться на другие сайты
  • 3 месяца спустя...

Рабочий пример для smtp.yandex.ru

В api/Notify.php заменить ssl на tls

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

В config/config.php

[phpmailer]
phpmailer_enable = true;
phpmailer_host = "smtp.yandex.ru";
phpmailer_port = 25;
phpmailer_user = "login@domain.com";
phpmailer_password = "password";
phpmailer_ssl = true;
Ссылка на сообщение
Поделиться на другие сайты
  • 2 недели спустя...

У кого SMTP Error: Could not connect to SMTP host

 

Попробуйте вот тут вообще без кавычек:

 

[phpmailer]
phpmailer_enable = true;
phpmailer_host = smtp.provider.com;
phpmailer_port = 25;
phpmailer_user = login@domain.com;
phpmailer_password = password;
phpmailer_ssl = true;

 

Мне помогло.

Ссылка на сообщение
Поделиться на другие сайты

У меня ошибка так же 

 

SMTP Error: Could not connect to SMTP host. 

А делал все что советовали в посте,  почта на яндеке info@site.ru

Все делал верно, если у многих так, думаю скрипт не рабочий.

Изменено пользователем Axotn1k
Ссылка на сообщение
Поделиться на другие сайты
  • 3 недели спустя...

Пипец, ради интереса почитал тему))

В ней 3 ТРИ!!! раза выложена ссылка на БЕСПЛАТНОЕ рабочее решение, плюс хитровыебанный Корс бесплатное решение продает :)

Зачем мучать труп?

Ради пиара гребанного Корса? Другого смысла не вижу...

Ссылка на сообщение
Поделиться на другие сайты

Уважаемые администраторы!

Прошу удалить пост г-на Kosyak76-a c грязными ругательствами в мой адрес как нарушающий правила форума.

 

Выпад указанного г-на тем более недопустим, что в этой теме мною был предложен коммерческий вариант решения проблемы:

во-первых, после прямого вопроса посетителя,

во-вторых, много месяцев назад.

 

Кстати, тот посетитель задал свой вопрос ПОСЛЕ того, как были опубликованы другие решения, видимо, что-то ему в них не понравилось...

Ссылка на сообщение
Поделиться на другие сайты

хитровыебанный Корс бесплатное решение продает :)

Ради пиара гребанного Корса? 

 

Корс опубликовал ссылку на свое решение, когда человек прямо попросил за деньги. К чему маты?

http://forum.simplacms.ru/topic/5654-отправка-писем-через-сторонний-smtp/?p=80421

Ссылка на сообщение
Поделиться на другие сайты
  • 4 месяца спустя...

19.10.2016

так же в инет магазине (на Simpla 2.3.7) перестали приходить заказы на почту

перечитал этот форум и не сразу, но сделал рабочий вариант

ссылка на архив

Изменено пользователем Lncm
Ссылка на сообщение
Поделиться на другие сайты

Я не могу заменить Notify.php из за доработок, есть список изменений в этом файле?

Изменено пользователем Julius123
Ссылка на сообщение
Поделиться на другие сайты

у меня при отправке письма пишет помог пост #6

SMTP Error: The following recipients failed: vlad347@gmail.com
 
Изменено пользователем Julius123
Ссылка на сообщение
Поделиться на другие сайты
  • 4 месяца спустя...

Есть готовое решение отправки уведомлений с сайта через SMTP (версия Simpla 2.3.6) ???

Изменено пользователем 123123
Ссылка на сообщение
Поделиться на другие сайты
  • 1 месяц спустя...
  • Решение

Тема старая, PHPMailer уже давно обновился. Выкладываю рабочую инструкцию:

 

1. Скачиваем PHPMailer и кладем в корень сайта: https://github.com/PHPMailer/PHPMailer и переименовываем PHPMailer-master в PHPMailer. Для тех, кто работает по ssh: 

$ git clone https://github.com/PHPMailer/PHPMailer

2. Заменяем содержимое api/Notify.php на следующее:

<?php

/**
 * Simpla CMS
 *
 * @copyright	2011 Denis Pikusov
 * @link		http://simplacms.ru
 * @author		Denis Pikusov
 *
 */
class Notify extends Simpla {

    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/PHPMailerAutoload.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 = "do-not-reply";
            $mailer->Sender = $mailer->Username;
            $mailer->Subject = $subject;
            $mailer->Body = $message;
            
            $mailer->Send();
        }
    }

    public function email_order_user($order_id) {
        if (!($order = $this->orders->get_order(intval($order_id))) || empty($order->email))
            return false;

        $purchases = $this->orders->get_purchases(array('order_id' => $order->id));
        $this->design->assign('purchases', $purchases);

        $products_ids = array();
        $variants_ids = array();
        foreach ($purchases as $purchase) {
            $products_ids[] = $purchase->product_id;
            $variants_ids[] = $purchase->variant_id;
        }

        $products = array();
        foreach ($this->products->get_products(array('id' => $products_ids)) as $p)
            $products[$p->id] = $p;

        $images = $this->products->get_images(array('product_id' => $products_ids));
        foreach ($images as $image)
            $products[$image->product_id]->images[] = $image;

        $variants = array();
        foreach ($this->variants->get_variants(array('id' => $variants_ids)) as $v) {
            $variants[$v->id] = $v;
            $products[$v->product_id]->variants[] = $v;
        }

        foreach ($purchases as &$purchase) {
            if (!empty($products[$purchase->product_id]))
                $purchase->product = $products[$purchase->product_id];
            if (!empty($variants[$purchase->variant_id]))
                $purchase->variant = $variants[$purchase->variant_id];
        }

        // Способ доставки
        $delivery = $this->delivery->get_delivery($order->delivery_id);
        $this->design->assign('delivery', $delivery);

        $this->design->assign('order', $order);
        $this->design->assign('purchases', $purchases);

        // Отправляем письмо
        // Если в шаблон не передавалась валюта, передадим
        if ($this->design->smarty->getTemplateVars('currency') === null) {
            $this->design->assign('currency', reset($this->money->get_currencies(array('enabled' => 1))));
        }
        $email_template = $this->design->fetch($this->config->root_dir . 'design/' . $this->settings->theme . '/html/email_order.tpl');
        $subject = $this->design->get_var('subject');
        $this->email($order->email, $subject, $email_template, $this->settings->notify_from_email);
    }

    public function email_order_admin($order_id) {
        if (!($order = $this->orders->get_order(intval($order_id))))
            return false;

        $purchases = $this->orders->get_purchases(array('order_id' => $order->id));
        $this->design->assign('purchases', $purchases);

        $products_ids = array();
        $variants_ids = array();
        foreach ($purchases as $purchase) {
            $products_ids[] = $purchase->product_id;
            $variants_ids[] = $purchase->variant_id;
        }

        $products = array();
        foreach ($this->products->get_products(array('id' => $products_ids)) as $p)
            $products[$p->id] = $p;

        $images = $this->products->get_images(array('product_id' => $products_ids));
        foreach ($images as $image)
            $products[$image->product_id]->images[] = $image;

        $variants = array();
        foreach ($this->variants->get_variants(array('id' => $variants_ids)) as $v) {
            $variants[$v->id] = $v;
            $products[$v->product_id]->variants[] = $v;
        }

        foreach ($purchases as &$purchase) {
            if (!empty($products[$purchase->product_id]))
                $purchase->product = $products[$purchase->product_id];
            if (!empty($variants[$purchase->variant_id]))
                $purchase->variant = $variants[$purchase->variant_id];
        }

        // Способ доставки
        $delivery = $this->delivery->get_delivery($order->delivery_id);
        $this->design->assign('delivery', $delivery);

        // Пользователь
        $user = $this->users->get_user(intval($order->user_id));
        $this->design->assign('user', $user);

        $this->design->assign('order', $order);
        $this->design->assign('purchases', $purchases);

        // В основной валюте
        $this->design->assign('main_currency', $this->money->get_currency());

        // Отправляем письмо
        $email_template = $this->design->fetch($this->config->root_dir . 'simpla/design/html/email_order_admin.tpl');
        $subject = $this->design->get_var('subject');
        $emails = explode(';', $this->settings->order_email);

        foreach ($emails as $email)
            $this->email(trim($email), $subject, $email_template, $this->settings->notify_from_email);
    }

    public function email_comment_admin($comment_id) {
        if (!($comment = $this->comments->get_comment(intval($comment_id))))
            return false;

        $this->design->assign('comment', $comment);

        // Отправляем письмо
        $email_template = $this->design->fetch($this->config->root_dir . 'simpla/design/html/email_comment_admin.tpl');
        $subject = $this->design->get_var('subject');
        $emails = explode(';', $this->settings->comment_email);

        foreach ($emails as $email)
            $this->email(trim($email), $subject, $email_template, $this->settings->notify_from_email);
    }

    public function email_password_remind($user_id, $code) {
        if (!($user = $this->users->get_user(intval($user_id))))
            return false;

        $this->design->assign('user', $user);
        $this->design->assign('code', $code);

        // Отправляем письмо
        $email_template = $this->design->fetch($this->config->root_dir . 'design/' . $this->settings->theme . '/html/email_password_remind.tpl');
        $subject = $this->design->get_var('subject');
        $this->email($user->email, $subject, $email_template, $this->settings->notify_from_email);

        $this->design->smarty->clearAssign('user');
        $this->design->smarty->clearAssign('code');
    }

    public function email_feedback_admin($feedback_id) {
        if (!($feedback = $this->feedbacks->get_feedback(intval($feedback_id))))
            return false;

        $this->design->assign('feedback', $feedback);

        // Отправляем письмо
        $email_template = $this->design->fetch($this->config->root_dir . 'simpla/design/html/email_feedback_admin.tpl');
        $subject = $this->design->get_var('subject');
        $emails = explode(';', $this->settings->comment_email);

        foreach ($emails as $email)
            $this->email(trim($email), $subject, $email_template, "$feedback->name <$feedback->email>", "$feedback->name <$feedback->email>");
    }
}

 

 

3. В конце файла config/config.php добавляем:

 

[phpmailer]
phpmailer_enable = true;
phpmailer_host = "smtp.yandex.ru";
phpmailer_port = 465;
phpmailer_user = "mail@domain";
phpmailer_password = "pass";
phpmailer_ssl = true;
 

Где mail@domain – имя вашей учетной записи на сервере yandex, pass – ваш пароль. После этих изменений все будет работать как часы.

Ссылка на сообщение
Поделиться на другие сайты
  • 3 недели спустя...

Подскажите как привязать с этим сервисом https://www.zoho.eu/mail/help/zoho-smtp.html#alink2 

У нас заблокировали янднекс в Украине

Изменено пользователем Axotn1k
Ссылка на сообщение
Поделиться на другие сайты
  • 5 недель спустя...

Аналогично, как и на примере Яндекс. 

 

Outgoing Server Name: smtp.zoho.eu

Port: 465

Security Type: SSL 

 

Скорее всего, что нужно будет указать, что 

 

phpmailer_host = "ssl://smtp.zoho.eu"; 
Изменено пользователем artbykoff
Ссылка на сообщение
Поделиться на другие сайты
  • 3 месяца спустя...

Ребята, все поставил по инструкции, но выдает ошибку:

 

 

 

Fatal error: require_once() [function.require]: Failed opening required 'PHPMailer/PHPMailerAutoload.php' (include_path='.:/usr/local/pear/php52') in /home/ikurtov/itarget.com.ua/www/api/Notify.php on line 25

 

 

Можете помочь??? Пожалуйста ...

Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
×
×
  • Создать...