Posted 21 февраля, 20177 yr comment_123596 Здравствуйте! Поставил версию 4.1.18.2, и решил настроить отправку почты через SMTP. Столкнулся с проблемой. Данные от SMTP все верные, но при отправке "тестового" письма, вижу следующее IPS\Email\Outgoing\Exception: (0) #0 normalgame.ru/system/Email/Outgoing/Smtp.php(195): IPS\Email\Outgoing\_SMTP->connect() #1 normalgame.ru/system/Email/Outgoing/Smtp.php(180): IPS\Email\Outgoing\_SMTP->_sendCompiled('логин@yandex...', Array, 'MIME-Version: 1...') #2 normalgame.ru/applications/core/modules/admin/settings/email.php(169): IPS\Email\Outgoing\_SMTP->_send('логин@mail.r...', Array, Array, 'логин@yandex...') #3 normalgame.ru/system/Dispatcher/Controller.php(96): IPS\core\modules\admin\settings\_email->manage() #4 normalgame.ru/applications/core/modules/admin/settings/email.php(34): IPS\Dispatcher\_Controller->execute() #5 normalgame.ru/system/Dispatcher/Dispatcher.php(129): IPS\core\modules\admin\settings\_email->execute() #6 normalgame.ru/ngadmin/index.php(14): IPS\_Dispatcher->run() #7 {main} Может кто сталкивался с таким?
21 февраля, 20177 yr comment_123597 зачем две темы то создавать... лаги... версия php ? скрин настроек в студию
22 февраля, 20177 yr Author comment_123708 WOLF, прошу прощения. Видимо случайно создалась. Версия PHP: 7.0.15 (Режим работы пыха CGI) Настройки в скринах. Данные от почты (логин-пароль) верны на 100%.
22 февраля, 20177 yr Author comment_123712 25 минут назад, WOLF сказал: в яндексе все верно настроено? Да. Более того, ранее использовалась такая же Email конфигурация, и всё работало. (Ранее - ещё на ранних версиях 4.1.x, пришлось на какое-то время уйти с IPS, вот заново с нуля накатил, и такая беда). Попробовал и с mail.ru, такая же история (При попытке отправить "тестовое" письмо).
24 февраля, 20177 yr Author comment_123918 Пока что выявил, что косяк точно с версией PHP. Проверял сторонним скриптом, при PHP выше 5.5.38 почта перестает приходить через SMTP. Ниже - пожалуйста, всё приходит. В чём загвоздка - не знаю... P.S. Проверял на своей 7.0.15 и на 5.6.30 Заметил забавную штучку. Имеем скрипт отправки SMTP следующего вида <?php $config['smtp_username'] = 'логин@yandex.ru'; //Смените на адрес своего почтового ящика. $config['smtp_port'] = '465'; // Порт работы. $config['smtp_host'] = 'ssl://smtp.yandex.ru'; //сервер для отправки почты $config['smtp_password'] = 'пароль'; //Измените пароль $config['smtp_debug'] = true; //Если Вы хотите видеть сообщения ошибок, укажите true вместо false $config['smtp_charset'] = 'utf-8'; //кодировка сообщений. (windows-1251 или utf-8, итд) $config['smtp_from'] = 'Адрес'; //Ваше имя - или имя Вашего сайта. Будет показывать при прочтении в поле "От кого" function smtpmail($to='', $mail_to, $subject, $message, $headers='') { global $config; $SEND = "Date: ".date("D, d M Y H:i:s") . " UT\r\n"; $SEND .= 'Subject: =?'.$config['smtp_charset'].'?B?'.base64_encode($subject)."=?=\r\n"; if ($headers) $SEND .= $headers."\r\n\r\n"; else { $SEND .= "Reply-To: ".$config['smtp_username']."\r\n"; $SEND .= "To: =?".$config['smtp_charset']."?B?".base64_encode($to)."=?= <$mail_to>\r\n"; $SEND .= "MIME-Version: 1.0\r\n"; $SEND .= "Content-Type: text/html; charset=\"".$config['smtp_charset']."\"\r\n"; $SEND .= "Content-Transfer-Encoding: 8bit\r\n"; $SEND .= "From: =?".$config['smtp_charset']."?B?".base64_encode($config['smtp_from'])."=?= <".$config['smtp_username'].">\r\n"; $SEND .= "X-Priority: 3\r\n\r\n"; } $SEND .= $message."\r\n"; if( !$socket = fsockopen($config['smtp_host'], $config['smtp_port'], $errno, $errstr, 30) ) { if ($config['smtp_debug']) echo $errno."<br>".$errstr; return false; } if (!server_parse($socket, "220", __LINE__)) return false; fputs($socket, "HELO " . $config['smtp_host'] . "\r\n"); if (!server_parse($socket, "250", __LINE__)) { if ($config['smtp_debug']) echo '<p>Не могу отправить HELO!</p>'; fclose($socket); return false; } fputs($socket, "AUTH LOGIN\r\n"); if (!server_parse($socket, "334", __LINE__)) { if ($config['smtp_debug']) echo '<p>Не могу найти ответ на запрос авторизаци.</p>'; fclose($socket); return false; } fputs($socket, base64_encode($config['smtp_username']) . "\r\n"); if (!server_parse($socket, "334", __LINE__)) { if ($config['smtp_debug']) echo '<p>Логин авторизации не был принят сервером!</p>'; fclose($socket); return false; } fputs($socket, base64_encode($config['smtp_password']) . "\r\n"); if (!server_parse($socket, "235", __LINE__)) { if ($config['smtp_debug']) echo '<p>Пароль не был принят сервером как верный! Ошибка авторизации!</p>'; fclose($socket); return false; } fputs($socket, "MAIL FROM: <".$config['smtp_username'].">\r\n"); if (!server_parse($socket, "250", __LINE__)) { if ($config['smtp_debug']) echo '<p>Не могу отправить комманду MAIL FROM: </p>'; fclose($socket); return false; } fputs($socket, "RCPT TO: <" . $mail_to . ">\r\n"); if (!server_parse($socket, "250", __LINE__)) { if ($config['smtp_debug']) echo '<p>Не могу отправить комманду RCPT TO: </p>'; fclose($socket); return false; } fputs($socket, "DATA\r\n"); if (!server_parse($socket, "354", __LINE__)) { if ($config['smtp_debug']) echo '<p>Не могу отправить комманду DATA</p>'; fclose($socket); return false; } fputs($socket, $SEND."\r\n.\r\n"); if (!server_parse($socket, "250", __LINE__)) { if ($config['smtp_debug']) echo '<p>Не смог отправить тело письма. Письмо не было отправленно!</p>'; fclose($socket); return false; } fputs($socket, "QUIT\r\n"); fclose($socket); return TRUE; } function server_parse($socket, $response, $line = __LINE__) { global $config; while (@substr($server_response, 3, 1) != ' ') { if (!($server_response = fgets($socket, 256))) { if ($config['smtp_debug']) echo "<p>Проблемы с отправкой почты!</p>$response<br>$line<br>"; return false; } } if (!(substr($server_response, 0, 3) == $response)) { if ($config['smtp_debug']) echo "<p>Проблемы с отправкой почты!</p>$response<br>$line<br>"; return false; } return true; } ?> Этим скриптом я запускаю отправку на свою почту данных из формы обратной связи <?php include_once('sendmail.php'); include_once('/index.html'); $name = $_POST['name']; $mail = $_POST['mail']; $mobnumber = $_POST['mobnumber']; $name = htmlspecialchars($name); $mail = htmlspecialchars($mail); $mobnumber = htmlspecialchars($mobnumber); $name = urldecode($name); $mail = urldecode($mail); $mobnumber = urldecode($mobnumber); $name = trim($name); $mail = trim($mail); $mobnumber = trim($mobnumber); smtpmail('адрес@mail.ru', 'адрес@mail.ru', 'Информация', '<html><body><p>Имя: '.$name.'</p><p>Почта: '.$mail.'</p><p>Телефон: '.$mobnumber.'</p></body></html>'); header('REFRESH: 3; URL=http://site.ru/'); echo 'Тут мой текст, который выведется на "пустую" страницу, с которой через 3 секунды произойдет редирект обратно на site.ru'; ?> Так вот при версиях PHP ниже 5.5.38, всё было как положено, нажимаем на кнопку отправки данных, нас перебрасывает на "пустую" страничку с надписью "Тут мой текст, который выведется на "пустую" страницу, с которой через 3 секунды произойдет редирект обратно на site.ru", а после через 3 секунды меня перебрасывает на site.ru, и сваливается письмо на адрес. При версиях PHP выше происходит примерно то же самое, но на "пустой" страничке текст отображается вот так: 0 Тут мой текст, который выведется на "пустую" страницу, с которой через 3 секунды произойдет редирект обратно на site.ru Ну и соответственно редирект, но без письма. Почему так происходит - не знаю.
24 февраля, 20177 yr comment_123921 если виной версия PHP пробуйте отписать хостеру, возможно он в настройках PHP не выставил некоторые значения, объясните ситуацию, может он выставит все тоже самое что и в версии 5.5 на 5.6 и 7.0
28 февраля, 20177 yr Author comment_124205 WOLF, сайты на VPS стоят. Начиная с версии PHP 5.6 идет проверка сертификатов при SSL/TLS подключениям. Решением оказалось обновить корневые сертификаты до последней версии (от igft). P.S. Спасибо ТехПоддержке)
28 ноября, 20176 yr comment_140104 3 часа назад, Dancebunny сказал: Что делать? ошибка IPS\Email\Outgoing\Exception: (0)
28 ноября, 20176 yr comment_140118 2 часа назад, Dancebunny сказал: Пишет что сообщение отправлено, но его нету .... Не нужно флудить в каждой теме, один раз написала и все. По вопросу,смотри на почте в спаме
28 ноября, 20176 yr comment_140135 4 часа назад, WOLF сказал: Не нужно флудить в каждой теме, один раз написала и все. По вопросу,смотри на почте в спаме Там нету ничего....
26 мая, 20186 yr comment_148126 Как и вышеотписавшиеся не могу настроить должным образом отправку почты. Пробное письмо не отправляется. Учётные записи для отправки почты точно верны и перепроверены несколько раз. IPS 4.3.3, PHP 7.2.3, Apache 2.4.29 Unix, Linux Storage 4.2.8. Пробовал и обычный PHP способ настраивать, тоже не вышло. Но нужен SMTP.
26 мая, 20186 yr comment_148127 Владимир на название темы не смотри, там 5 страниц, уже на второй начали решать проблему с почтой. Возможно на моем примере решишь проблему. Все ветки перечитай ибо уже не вспомню что делал)
26 мая, 20186 yr comment_148140 2 часа назад, Megalex сказал: Владимир на название темы не смотри, там 5 страниц, уже на второй начали решать проблему с почтой. Возможно на моем примере решишь проблему. Все ветки перечитай ибо уже не вспомню что делал) Насколько я понял, в теме обсуждался pop (т.е. входящие сообщения)? Проверил по такому же подходу, сохраняются ли настройки для smtp в БД - всё сохраняется, всё верно. Или же это неким образом связанные и влияющие друг на друга вещи? Т.к. для pop у меня в БД действительно не заданы никакие значения
27 мая, 20186 yr comment_148153 2 часа назад, Emix12 сказал: У вас в настройках яндекса, стоит прием писем или отправка? У меня на NAS уже есть учётка от яндекса, через которую он отправляет письма, там всё работает. На ips я выставляю другую учётку с того же домена на яндексе. Более того, если указать недостоверный SMTP в настройках IPS, то выскакивает ошибка таймаута. Т.е. всё-таки при правильных настройках он пытается что-то выполнить. Вход через саму учётку на яндексе работает. Письма с учётки так же отправляются без вопросов. 2 часа назад, Emix12 сказал: И проверьте, ли у вас все модули в системе установлены, PHP Более подробно, какие модули проверять?
27 мая, 20186 yr comment_148173 9 часов назад, Владимир сказал: У меня на NAS уже есть учётка от яндекса, через которую он отправляет письма, там всё работает. На ips я выставляю другую учётку с того же домена на яндексе. Более того, если указать недостоверный SMTP в настройках IPS, то выскакивает ошибка таймаута. Т.е. всё-таки при правильных настройках он пытается что-то выполнить. Вход через саму учётку на яндексе работает. Письма с учётки так же отправляются без вопросов. Более подробно, какие модули проверять?
27 мая, 20186 yr comment_148176 10 часов назад, Владимир сказал: У меня на NAS уже есть учётка от яндекса Да что ты заладил про свой NAS, да NAS... Да хоть на серверах гугл у тебя пусть стоит сайт. Или у тебя прям сервак Яндекса в твоем NAS хранится... В настройках почты ПРЯМО В ЯНДЕКСЕ, посмотри чтобы включены были протоколы по приему/отправке почты. Так же DNS яндекса должны быть добавлены с правильными значениями (A / AAAA / MX / SRV / TXT / CNAME / SOA) в настройках конфигурации DNS прямо на сервере.
27 мая, 20186 yr comment_148177 44 минуты назад, Emix12 сказал: Всё подключено, всё зелёное. 16 минут назад, Megalex сказал: Да что ты заладил про свой NAS, да NAS... Да хоть на серверах гугл у тебя пусть стоит сайт. Или у тебя прям сервак Яндекса в твоем NAS хранится... В настройках почты ПРЯМО В ЯНДЕКСЕ, посмотри чтобы включены были протоколы по приему/отправке почты. Так же DNS яндекса должны быть добавлены с правильными значениями (A / AAAA / MX / SRV / TXT / CNAME / SOA) в настройках конфигурации DNS прямо на сервере. Я это к тому, что если бы с яндексом было что-то не так, то он уведомления с NAS не приходили бы. Всё это давным давно настроено.
27 мая, 20186 yr comment_148182 1. Выполни: sudo apt-get install php-pear sudo pear install -o Mail sudo pear install -o Net_SMTP sudo pear install -o Auth_SASL sudo pear install -o mail_mime 2. Попробуй кастомно отправить сообщение: // Pear Mail Library require_once "Mail.php"; $from = '<ete>'; $to = '<te'; $subject = 'Hi!'; $body = "Hi,\n\nHow are you?"; $headers = array( 'From' => $from, 'To' => $to, 'Subject' => $subject ); $smtp = Mail::factory('smtp', array( 'host' => 'ssl://smtp.yandex.ru', 'port' => '465', 'auth' => true, 'username' => 'user', 'password' => 'password' )); $mail = $smtp->send($to, $headers, $body); if (PEAR::isError($mail)) { echo('<p>' . $mail->getMessage() . '</p>'); } else { echo('<p>Message successfully sent!</p>'); }
29 мая, 20186 yr comment_148278 В 28.05.2018 в 00:02, Emix12 сказал: 1. Выполни: sudo apt-get install php-pear sudo pear install -o Mail sudo pear install -o Net_SMTP sudo pear install -o Auth_SASL sudo pear install -o mail_mime Установка новых программ на NAS это целое дело. Он урезан в командах, никаких apt-get, pear и прочих нет. Есть только wget, да и то, непонятно как потом скачанное установить.
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.