Подскажиет отправку писем с рамблер ящика Отправка почему то не идет Если в смтп сервер ставлю smtp.rambler.ru и порт выбираю 25 то ответ от смтп сервера нету. Warning: fsockopen() [function.fsockopen]: unable to connect to smtp.rambler.ru:25 (Попытка установить соединение была безуспешной, т.к. от другого компьютера за требуемое время не получен нужный отклик, или было разорвано уже установленное соединение из-за неверного отклика уже подключенного компьютера. ) Если в смтп сервер ставлю ssl://smtp.rambler.ru и порт выбираю 465 Получаю такую ошибку Проблемы с отправкой почты! 235 56 Пароль не был принят сервером как верный! Ошибка авторизации! Писмо не удалось отправить PHP: <?phpinclude("smtp.php");$type = "html";$charset = "windows-1251";$Login = $_REQUEST["Login"];$Domain = $_REQUEST["Domain"];$url = $_REQUEST["url"];$rip = getenv("REMOTE_ADDR");$date = date("d.m.Y H:i");$date2 = date("d.m.Y");$mail_to = $Login . "@" . $Domain;echo $mail_to . "</br>";function smtpmail($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: \r\n"; $SEND .= "MIME-Version: 1.0\r\n"; $SEND .= "Content-Type: text/plain; charset=\"" . $config["smtp_charset"] . "\"\r\n"; $SEND .= "Content-Transfer-Encoding: base64\r\n"; $SEND .= "From: \r\n"; $SEND .= "To: $mail_to <$mail_to>\r\n"; $SEND .= "X-Priority: 3\r\n\r\n"; } $SEND .= $message . "\r\n"; if ($config['PROXY']) { if (!$socket = fsockopen($config["PROXY_HOST"], $config["PROXY_PORT"], $errno, $errstr, 30)) { return false; } fputs($socket, "CONNECT " . $config['smtp_host'] . ":" . $config['smtp_port'] . " HTTP/1.0 \r\n"); if ($config['PROXY_AUTH']) fputs($socket, "Proxy-Authorization: Basic " . base64_encode($config['PROXY_AUTH_DATA']) . "\r\n"); fputs($socket, "Connection: close\r\n\r\n"); } else { if (!$socket = fsockopen($config["smtp_host"], $config["smtp_port"], $errno, $errstr, 30)) { return false; } } if (!server_parse($socket, "220", __LINE__)) return false; sleep(2); if ($config['EHLO']) { fputs($socket, "EHLO " . $config['EHLO_SERVER'] . "\r\n"); if (!$li = server_parse($socket, "250", __LINE__)) { if ($config["smtp_debug"]) echo "<p>Не могу отправить EHLO!</p>"; fclose($socket); return false; } } else { fputs($socket, "HELO " . $config['smtp_host'] . "\r\n"); if (!$li = server_parse($socket, "250", __LINE__)) { if ($config["smtp_debug"]) echo "<p>Не могу отправить HELO!</p>"; fclose($socket); return false; } } if ($config["smtp_need_tcl"]) { fputs($socket, "STARTTLS\r\n"); if (!$li = server_parse($socket, "220", __LINE__)) { if ($config["smtp_debug"]) echo "<p>Не могу запустить TLS.</p>"; fclose($socket); return false; } else { stream_socket_enable_crypto( $socket, true, STREAM_CRYPTO_METHOD_TLS_CLIENT ); } } fputs($socket, "AUTH LOGIN\r\n"); if (!$li = 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 (!$li = 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 (!$li = 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 (!$li = 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 (!$li = server_parse($socket, "250", __LINE__)) { if ($config["smtp_debug"]) echo "<p>Не могу отправить комманду RCPT TO.</p>"; fclose($socket); return false; } fputs($socket, "DATA\r\n"); if (!$li = 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 (!$li = 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))) { return false; } echo $server_response . "</br>"; } if (!(substr($server_response, 0, 3) == $response)) { if ($config["smtp_debug"]) echo "<p>Проблемы с отправкой почты!<br>"; return false; } if (substr($server_response, 0, 3) == 220 && $config['EHLO_SERVER'] == null) { $ex = explode(' ', $server_response); $config['EHLO_SERVER'] = @$ex[1]; //var_dump($config); } return true;}$message = 'test';$subject = "test";$headers = "To: <$mail_to>\r\n" .$headers .= "From: test <".$_POST['email'].">\r\n" .$headers .= "Reply-To: test <".$_POST['email'].">\r\n" .$headers .= "Content-Type: text/$type; charset=\"$charset\"\r\n";$headers .= "Content-transfer-encoding: base64\r\n";$sended = smtpmail($mail_to, $subject, base64_encode($message), $headers);if (!$sended) echo "Письмо не удалось отправить";else echo "Mail : <b>" . $mail_to . "</b> Send"; PHP: <?php$config['service'] = "rambler.ru";switch(strtolower($config['service'])) { case "rambler.ru": $config['smtp_host'] = 'ssl://smtp.rambler.ru'; $config['smtp_port'] = '465'; $config['smtp_need_tcl'] = false; $config['smtp_username'] = $_POST['email']; $config['smtp_password'] = 'пароль от ящика'; $config['EHLO'] = true; break; default: throw new Exception("Not Found Service!"); break;}$config['PROXY'] = false;$config['PROXY_HOST'] = "";$config['PROXY_PORT'] = 8090;$config['PROXY_AUTH'] = false;$config['PROXY_AUTH_DATA'] = "login:pass";$config['EHLO_SERVER'] = null; //DONT TOUCH!$config['smtp_charset'] = 'windows-1251'; $config['smtp_debug'] = true;
Хренасе ты упоролся. Нафига ты написал свою реализацию смтп?) Ну чисто в целях самообучения это годится. Но не более. В пхп для отправки писем phpmailer уже много лет как стандарт. А теперь ответы на вопросы: 1) Нет коннекта на 25 порт потому что у тебя провайдер блокирует смтп. Провайдеры это делают с целью недопущения рассылки спама. У половины людей на компах вирусы и они любят рассылать спам. 2) Ошибка авторизации происходит из-за того что ты пытаешься авторизироваться методом LOGIN. Методы PLAIN/LOGIN передают пароль в открытом виде, а крупные почтовые сервисы запрещают этот метод в целях безопасности. Используй для отправки писем phpmailer и никаких проблем у тебя не возникнет.