File: //proc/662498/root/home/retile.ru/public_html/smtp_test_mail.php
<?php
$smtp_host = 'smtp.timeweb.ru';
$smtp_port = 25; // STARTTLS порт
$smtp_user = 'cart@retile.ru';
$smtp_pass = 'G3pN3KX37';
$to_email = 'webservicemy@yandex.ru';
$from_email = $smtp_user;
echo "Проверка подключения к SMTP серверу...\n";
echo "Хост: $smtp_host\n";
echo "Порт: $smtp_port\n\n";
// Создаем соединение
$socket = @fsockopen($smtp_host, $smtp_port, $errno, $errstr, 30);
if (!$socket) {
die("Ошибка подключения: $errstr ($errno)\n");
}
echo "Подключение установлено\n";
// Читаем приветственное сообщение
$response = fgets($socket, 515);
echo "Ответ сервера: $response";
// Отправляем EHLO
fputs($socket, "EHLO " . $smtp_host . "\r\n");
$response = fgets($socket, 515);
echo "EHLO ответ: $response";
// Читаем все строки ответа EHLO
while ($line = fgets($socket, 515)) {
echo $line;
if (substr($line, 3, 1) == " ") {
break;
}
}
// Проверяем поддержку STARTTLS
fputs($socket, "STARTTLS\r\n");
$response = fgets($socket, 515);
echo "STARTTLS ответ: $response";
if (substr($response, 0, 3) == "220") {
// Включаем криптографию
if (stream_socket_enable_crypto($socket, true, STREAM_CRYPTO_METHOD_TLS_CLIENT)) {
echo "STARTTLS успешно установлен\n\n";
// Повторно отправляем EHLO после STARTTLS
fputs($socket, "EHLO " . $smtp_host . "\r\n");
$response = fgets($socket, 515);
echo "EHLO после STARTTLS: $response";
while ($line = fgets($socket, 515)) {
echo $line;
if (substr($line, 3, 1) == " ") {
break;
}
}
// Аутентификация
fputs($socket, "AUTH LOGIN\r\n");
$response = fgets($socket, 515);
echo "AUTH LOGIN ответ: $response";
if (substr($response, 0, 3) == "334") {
fputs($socket, base64_encode($smtp_user) . "\r\n");
$response = fgets($socket, 515);
echo "Логин ответ: $response";
if (substr($response, 0, 3) == "334") {
fputs($socket, base64_encode($smtp_pass) . "\r\n");
$response = fgets($socket, 515);
echo "Пароль ответ: $response";
if (substr($response, 0, 3) == "235") {
echo "\n✓ Аутентификация успешна!\n\n";
// Попытка отправить тестовое письмо
fputs($socket, "MAIL FROM: <$from_email>\r\n");
$response = fgets($socket, 515);
echo "MAIL FROM ответ: $response";
if (substr($response, 0, 3) == "250") {
fputs($socket, "RCPT TO: <$to_email>\r\n");
$response = fgets($socket, 515);
echo "RCPT TO ответ: $response";
if (substr($response, 0, 3) == "250") {
fputs($socket, "DATA\r\n");
$response = fgets($socket, 515);
echo "DATA ответ: $response";
if (substr($response, 0, 3) == "354") {
$message = "From: $from_email\r\n";
$message .= "To: $to_email\r\n";
$message .= "Subject: Тест SMTP подключения\r\n";
$message .= "\r\n";
$message .= "Это тестовое сообщение для проверки SMTP.\r\n";
$message .= ".\r\n";
fputs($socket, $message);
$response = fgets($socket, 515);
echo "Отправка письма ответ: $response";
if (substr($response, 0, 3) == "250") {
echo "\n✓ Письмо успешно отправлено!\n";
}
}
}
}
} else {
echo "\n✗ Ошибка аутентификации: $response\n";
}
}
}
} else {
echo "Ошибка установки STARTTLS\n";
}
} else {
echo "Сервер не поддерживает STARTTLS\n";
}
// Закрываем соединение
fputs($socket, "QUIT\r\n");
fgets($socket, 515);
fclose($socket);
echo "\nСоединение закрыто\n";
die();