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

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


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

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

Понадобилось отправить письма через SMTP яндекса. Написал решение через библиотеку Phpmailer. В скрепке архив с файлами (Убрать в конце расширение .php). Надо к текущему сайту лишь добавить папку Phpmailer (в корень) и заменить api/Notify.php

 

В конфиге config/config.php добавить секцию:

[phpmailer]
phpmailer_enable = true;
phpmailer_host = 'smtp.yandex.ru';
phpmailer_port = 25;
phpmailer_user = 'user';
phpmailer_password = 'pass';
phpmailer_ssl = false;
Также переработал отправку сообщений о комментариях и заказах. Если в настройках указать не 1 email, а несколько через точку с запятой - сообщения о комментариях и заказах разойдутся всем.

simpla.rar.php

Ссылка на сообщение
Поделиться на другие сайты
  • Ответов 57
  • Дата создания
  • Последний ответ

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

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

  • 2 недели спустя...
  • 3 недели спустя...

У меня вот такую ошибку выдает:

SMTP Error: Could not connect to SMTP host. SMTP Error: Could not connect to SMTP host. 
Warning: Cannot modify header information - headers already sent by (output started at /home/folder/public_html/name.ru/Phpmailer/Phpmailer.php:586) in /home/folder/public_html/name.ru/view/CartView.php on line 125

Warning: Cannot modify header information - headers already sent by (output started at /home/folder/public_html/name.ru/Phpmailer/Phpmailer.php:586) in
Ссылка на сообщение
Поделиться на другие сайты
  • 5 месяцев спустя...

Большое спасибо, очень полезная доработка!

Пришлось немного модифицировать конфиг для Яндекса:

[phpmailer]
phpmailer_enable = true;
phpmailer_host = 'smtp.yandex.ru';
phpmailer_port = 465;
phpmailer_user = 'email';
phpmailer_password = 'pass';
phpmailer_ssl = true;
 
и notify:

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

Иначе не хотело работать...

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

у меня вот такая ошибка вышла, но в админке в ЗАКАЗЫ поступает, но НЕ отсылается

 

SMTP Error: Could not connect to SMTP host. SMTP Error: Could not connect to SMTP host.
Warning: Cannot modify header information - headers already sent by (output started at /home/site/data/www/site/Phpmailer/Phpmailer.php:586) in /home/site/data/www/site/view/CartView.php on line 122

Warning: Cannot modify header information - headers already sent by (output started at /home/site/data/www/site/Phpmailer/Phpmailer.php:586) in /home/site/data/www/site/index.php on line 33
Ссылка на сообщение
Поделиться на другие сайты

кусок CartView.php:



			// Отправляем письмо пользователю
			$this->notify->email_order_user($order->id);
	    	
			// Отправляем письмо администратору
			$this->notify->email_order_admin($order->id);
	    	
	    	// Очищаем корзину (сессию)
			$this->cart->empty_cart();
						
			// Перенаправляем на страницу заказа
сторка 122		header('Location: '.$this->config->root_url.'/order/'.$order->url);
		}

кусок от index.php:



// Если все хорошо

if(($res = $view->fetch()) !== false)

{

	// Выводим результат

строка 33	header("Content-type: text/html; charset=UTF-8");	

	print $res;



	// Сохраняем последнюю просмотренную страницу в переменной $_SESSION['last_visited_page']

	if(empty($_SESSION['last_visited_page']) || empty($_SESSION['current_page']) || $_SERVER['REQUEST_URI'] !== $_SESSION['current_page'])

	{

		if(!empty($_SESSION['current_page']) && !empty($_SESSION['last_visited_page']) && $_SESSION['last_visited_page'] !== $_SESSION['current_page'])

			$_SESSION['last_visited_page'] = $_SESSION['current_page'];

		$_SESSION['current_page'] = $_SERVER['REQUEST_URI'];

	}		

}

 

помогите ребята. что не так?

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

Автор темы 

Был на сайте 27.09.2013 14:11

 

думаю он бросил это дело.

Писал симпле:

 

Denis Pikusov
11:26 (2 ч. назад)
cleardot.gif
 
cleardot.gif
cleardot.gif
кому: мне
cleardot.gif
К сожалению я не могу помочь с чужим кодом, уточните пожалуйста у автора модуля

 
       
А у Вас нету другого решения?
хостинг менять не Хочется, т.к. привык к нему.
 


 
profile_mask2.png
Denis Pikusov
11:49 (1 ч. назад)
cleardot.gif
 
cleardot.gif
cleardot.gif
К сожалению пока нет

 

 

что делать уже незнаю, руки опустились

 

смотрю файлы надо сохранить в utf-8 без БОМа

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

У вас ошибка о невозможности соединиться с SMTP хостом.

Если у кого то работает, а у вас нет, тут варианты:

1. Хостинг который вас безбожно режет, попробуйте поменять порт, многие закрывают 25 порт. Все популярные почтовые сервисы предоставляют альтернативный с SSL

2. Вы ошиблись в параметрах конфигурации (хост, порт, имя пользователя, пароль). Не везде срабатывает в качестве логина username, многие требуют указывать username@domain.ru

 

А по хорошему, SMTP не нужен, достаточно нормального VPS и настроенного DKIM на почтовом сервере - письма уходят без проблем и не попадают в спам

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

[phpmailer]
phpmailer_enable = true;
phpmailer_host = "smtp.yandex.ru";
phpmailer_port = 465;
phpmailer_user = "вашеимя@yandex.ru";
phpmailer_password = "пароль";
phpmailer_ssl = true;

 

кавычки двойные с учетом измененив notifi

и как тут писали.

c 47 строки по 49 (у меня) меняем на

 

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

 

и все работает

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

у меня выдает ошибку:

 

Fatal error: Call to undefined method Notify::email_user_registration() in /var/www/cdfance9645/data/www/fancentr.com/view/RegisterView.php on line 38

 

что делать? Подскажите...

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

Пол дня мучался, заработало когда заменил строку

 

phpmailer_host = 'smtp.yandex.ru';

 

на

 

phpmailer_host = 'ssl://smtp.yandex.ru';

 

http://forum.simplacms.ru/topic/9389-%D0%BF%D1%80%D0%B0%D0%B2%D0%B8%D0%BB%D1%8C%D0%BD%D0%B0%D1%8F-%D0%BE%D1%82%D0%BF%D1%80%D0%B0%D0%B2%D0%BA%D0%B0-%D0%BC%D1%8B%D0%BB%D0%B0-%D1%87%D0%B5%D1%80%D0%B5%D0%B7-stmp/ пол-минуты не мучался и все получилось ;)

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

Хотя кто бы знал, что просто нужно дописать ssl://   перед адресом сервера. Думаю и с этим примером то же самое было бы

 

яндекс анонсировали полный переход на защищенный протокол год назад помоему или около того, поэтому везде нужно было заменить простой http на шифрованый и порт 465.

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

Хотя кто бы знал, что просто нужно дописать ssl://   перед адресом сервера. Думаю и с этим примером то же самое было бы

 

1,5 года стоит эта доработка и все работает

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

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

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

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

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

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

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

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

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

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