ModX & внешний SMTP сервер (Yandex)
Решил отказаться от почтового сервера на своем VDS в пользу внешнего от yandex.
Проблема в следующем. Есть сайт на modx, на котором нужно связать форму обратной связи (eForm) с smtp сервером yandex.
Каким образом это реализовать?
Проблема в следующем. Есть сайт на modx, на котором нужно связать форму обратной связи (eForm) с smtp сервером yandex.
Каким образом это реализовать?
1 ответов
modx для отправки писем использует phpMailer.
Насколько я помню, в данном классе есть подобная реализация отправки через smtp.
Смотрим файл
assets/snippets/eform/eform.inc.php
Там есть строки
# send abuse alert
$mail = new PHPMailer();
$mail->IsMail();
$mail->IsHTML($isHtml);
$mail->From = $modx->config['emailsender'];
$mail->FromName = $modx->config['site_name'];
$mail->Subject = $_lang['ef_mail_abuse_subject'];
$mail->Body = $body;
AddAddressToMailer($mail,"to",$modx->config['emailsender']);
$mail->send(); //ignore mail errors in this case
Потом идем по ссылке http://phpmailer.worxware.com/index.php?pg=exampleasmtp и смотрим пример smtp авторизации в phpMailer.
Проще некуда :)
Заменить строку
на
$mail->IsSMTP();
и передаем все необходимые параметры для smtp
$mail->SMTPAuth = true; // enable SMTP authentication
$mail->Host = "mail.yourdomain.com"; // sets the SMTP server
$mail->Port = 26; // set the SMTP port for the GMAIL server
$mail->Username = "yourname@yourdomain"; // SMTP account username
$mail->Password = "yourpassword"; // SMTP account password
Не вышло. Ошибка:
"SMTP Error: Could not authenticate. Main mail: Программа не смогла отправить почтуSMTP Error: Could not authenticate."
вписал в новый class.phpmailer.php настройки своего SMTP сервера
public $Mailer = 'smtp';
public $Host = 'smtp.yandex.ru';
public $Port = 587;
public $SMTPSecure = 'tls';
public $SMTPAuth = true;
public $Username = 'no-reply@domen.ru';
public $Password = '----------';
далее нашёл в assets\snippets\eform\eform.inc.php строку
$mail->IsMail();
и заменил на
$mail->IsSMTP();
всего их там 5 штук.
После этих действий вылетала ошибка на строчке в class.smtp.php
// Begin encrypted connection
//if(!stream_socket_enable_crypto($this->smtp_conn, true, STREAM_CRYPTO_METHOD_TLS_CLIENT)) {
// return false;
// }
return true;
закоментил и собственно ошибка при отправке
"SMTP Error: Could not authenticate. Main mail: Программа не смогла отправить почтуSMTP Error: Could not authenticate."
Куда копать?