Хостинг и регистрация доменов

Чат онлайн
→  Хостинг →  Регистрация доменов →  VPS / VDS →  Выделенные сервера →  FAQ →  Форум →  Контакты →  Техподдержка

Проверка работы исходящей почты через SMTP

Хостинг УкраинаFAQХостинг Проверка работы исходящей почты через SMTP

Скрипт для проверки работы исходящей почты с сайта по SMTP

<?php

$login = 'test@domain.tld'; // замените test@domain.tld на адрес электронной почты, с которого производится отправка. Поскольку логин совпадает с адресом отправителя - данная переменная используется и как логин, и как адрес отправителя. 

$password = 'password';  // Замените 'password' на пароль от почтового ящика, с которого производится отправка.
$to = 'to@domain.tld';  // замените to@domain.tld на адрес электронной почты получателя письма.
$text="Привет, проверка связи по SMTP.";  // Содержимое отправляемого письма
function get_data($smtp_conn)  // функция получения кода ответа сервера. 
{
$data="";
while($str = fgets($smtp_conn,515)) 
{
$data .= $str;
if(substr($str,3,1) == " ") { break; }
}
return $data;
}
// формируем служебный заголовок письма.
$header="Date: ".date("D, j M Y G:i:s")." +0700\r\n"
$header.="From: =?UTF-8?Q?".str_replace("+","_",str_replace("%","=",urlencode('Тестовый скрипт')))."?= <$login>\r\n"
$header.="X-Mailer: Test script hosting Ukraine.com.ua \r\n"
$header.="Reply-To: =?UTF-8?Q?".str_replace("+","_",str_replace("%","=",urlencode('Тестовый скрипт')))."?= <$login>\r\n";
$header.="X-Priority: 3 (Normal)\r\n";
$header.="Message-ID: <12345654321.".date("YmjHis")."@ukraine.com.ua>\r\n";
$header.="To: =?UTF-8?Q?".str_replace("+","_",str_replace("%","=",urlencode('Получателю тестового письма')))."?= <$to\r\n";
$header.="Subject: =?UTF-8?Q?".str_replace("+","_",str_replace("%","=",urlencode('проверка')))."?=\r\n";
$header.="MIME-Version: 1.0\r\n";
$header.="Content-Type: text/plain; charset=UTF-8\r\n";
$header.="Content-Transfer-Encoding: 8bit\r\n";
$smtp_conn = fsockopen("mail.ukraine.com.ua", 25,$errno, $errstr, 10)//соединяемся с почтовым сервером mail.ukraine.com.ua , порт 25 .
if(!$smtp_conn) {print "соединение с серверов не прошло"; fclose($smtp_conn); exit;}  
$data = get_data($smtp_conn);
fputs($smtp_conn,"EHLO mail.ukraine.com.ua\r\n")// начинаем приветствие.
$code = substr(get_data($smtp_conn),0,3)// проверяем, не возвратил ли сервер ошибку.
if($code != 250) {print "ошибка приветсвия EHLO"; fclose($smtp_conn); exit;}
fputs($smtp_conn,"AUTH LOGIN\r\n")// начинаем процедуру авторизации.
$code = substr(get_data($smtp_conn),0,3);
if($code != 334) {print "сервер не разрешил начать авторизацию"; fclose($smtp_conn); exit;}

fputs($smtp_conn,base64_encode("$login")."\r\n")// отправляем серверу логин от почтового ящика (на хостинге "Украина" он совпадает с именем почтового ящика).
$code = substr(get_data($smtp_conn),0,3);
if($code != 334) {print "ошибка доступа к такому юзеру"; fclose($smtp_conn); exit;}

fputs($smtp_conn,base64_encode("$password")."\r\n");       // отправляем серверу пароль.
$code = substr(get_data($smtp_conn),0,3);                 
if($code != 235) {print "неправильный пароль"; fclose($smtp_conn); exit;}

fputs($smtp_conn,"MAIL FROM:$login\r\n")// отправляем серверу значение MAIL FROM.
$code = substr(get_data($smtp_conn),0,3);
if($code != 250) {print "сервер отказал в команде MAIL FROM"; fclose($smtp_conn); exit;}

fputs($smtp_conn,"RCPT TO:$to\r\n")// отправляем серверу адрес получателя.
$code = substr(get_data($smtp_conn),0,3);
if($code != 250 AND $code != 251) {print "Сервер не принял команду RCPT TO"; fclose($smtp_conn); exit;}

fputs($smtp_conn,"DATA\r\n")// отправляем команду DATA.
$code = substr(get_data($smtp_conn),0,3);
if($code != 354) {print "сервер не принял DATA"; fclose($smtp_conn); exit;}

fputs($smtp_conn,$header."\r\n".$text."\r\n.\r\n")// отправляем тело письма.
$code = substr(get_data($smtp_conn),0,3);
if($code != 250) {print "ошибка отправки письма"; fclose($smtp_conn); exit;}

if($code == 250) {print "Письмо отправлено успешно. Ответ сервера $code"  ;}

fputs($smtp_conn,"QUIT\r\n");   // завершаем отправку командой QUIT.
fclose($smtp_conn)// закрываем соединение.
?>
Как им пользоваться?
Написал vershinasion 28.10.2013 в 03:19 Ответить
Имя:
E-mail:

Обновить картинку
Ваш комментарий будет добавлен после проверки администратором
1. Создать файл sendmail-test.php с приведенным выше содержимым.
2. Закачать его на хостинг.
3. Вызвать скрипт, который расположен на хостинге через браузер.
Написал Илья 28.10.2013 в 12:07 Ответить
Имя:
E-mail:

Обновить картинку
Ваш комментарий будет добавлен после проверки администратором
У меня на экране появилось сообщение:
> 220 mail.ukraine.com.ua ESMTP ready
< HELO vsya-svarka.dp.ua
>
HELO vsya-svarka.dp.ua Failed -
Что это значит? Я ваш скрипт заключил в <?php ?>
Написал vershinasion 28.10.2013 в 19:25 Ответить
Имя:
E-mail:

Обновить картинку
Ваш комментарий будет добавлен после проверки администратором
Перед этим я пробовал отправлять сообщения с сайта через форму обратной связи указав в ней Путь к sendmail на хостинге /usr/sbin/sendmail, но выдает:
"Not Found
The requested URL /usr/sbin/sendmail was not found on this server."
Написал vershinasion 28.10.2013 в 19:26 Ответить
Имя:
E-mail:

Обновить картинку
Ваш комментарий будет добавлен после проверки администратором
Судя по всему вы не той функцией вызываете /usr/sbin/sendmail нужно использовать exec или backtrick operator
Написал Илья 02.11.2013 в 19:13 Ответить
Имя:
E-mail:

Обновить картинку
Ваш комментарий будет добавлен после проверки администратором
Напишите путь к скрипту, я проверю.
Написал Илья 02.11.2013 в 19:15 Ответить
Имя:
E-mail:

Обновить картинку
Ваш комментарий будет добавлен после проверки администратором
Путь к форме обратной связи. Та где написано"Тестовая форма обратной связи":http://vsya-svarka.dp.ua/Podzakaz.php
Если чесно я не понимаю что значит exec или backtrick operator. Если для вас не трудно подскажите что нужно вводить вместо <form method="post" action="/usr/sbin/sendmail">
Написал vershinasion 02.11.2013 в 21:22 Ответить
Имя:
E-mail:

Обновить картинку
Ваш комментарий будет добавлен после проверки администратором
1. Создаете файл mail.php:
<?php
mail('ваш@е-маил.com', $_POST['tema'], "Имя: $_POST[name]\nE-mail: $_POST[email]\n\n$_POST[msg]");
header("Location: /sent.php");
exit;
?>

2. В форме вместо /usr/sbin/sendmail ставите /mail.php

3. Создаете страницу sent.php, на которой благодарите клиента за отправленный запрос.
Написал Илья 03.11.2013 в 08:09 Ответить
Имя:
E-mail:

Обновить картинку
Ваш комментарий будет добавлен после проверки администратором
Путь к скрипту: http://vsya-svarka.dp.ua/sendmail-test.php

Скрипт для проверки работы исходящей почты через sendmail не работает, похоже что там у вас ошибка.
Написал vershinasion 03.11.2013 в 20:04 Ответить
Имя:
E-mail:

Обновить картинку
Ваш комментарий будет добавлен после проверки администратором
Посмотрел Ваш скрипт, там вы заменилм строку
$ourhost = $_SERVER['HTTP_HOST']
на
$_SERVER['http://vsya-svarka.dp.ua'];
этого делать не нужно.
Написал Илья 03.11.2013 в 21:14 Ответить
Имя:
E-mail:

Обновить картинку
Ваш комментарий будет добавлен после проверки администратором
Это не решило проблему, буду разбираться дальше.
Написал Илья 03.11.2013 в 21:32 Ответить
Имя:
E-mail:

Обновить картинку
Ваш комментарий будет добавлен после проверки администратором
Вы пожалуйста сообщите когда разберетесь.
Написал vershinasion 04.11.2013 в 02:20 Ответить
Имя:
E-mail:

Обновить картинку
Ваш комментарий будет добавлен после проверки администратором
Разобрались, у нас в скрипте ошибка - нет переносов строк, их съел редактор. В вашем скрипте все исправили он работает.
В строке:
fwrite($cp, "{$command} ");
должна быть:
fwrite($cp, "{$command}\r\n");

строка
send("To: $recipient From: $email Subject: test Test connection. ". '.'." ", 250);
должна быть
send("To: $recipient\r\nFrom: $email\r\nSubject: test Test connection.\r\n". '.'." ", 250);
Написал Илья 04.11.2013 в 08:19 Ответить
Имя:
E-mail:

Обновить картинку
Ваш комментарий будет добавлен после проверки администратором
Спасибо за помощь.
А что это за новые файлы появились у меня на хостинге
x.php - это еще понятно,
а вот это что за зверь? (.bash_history)
Написал vershinasion 04.11.2013 в 13:49 Ответить
Имя:
E-mail:

Обновить картинку
Ваш комментарий будет добавлен после проверки администратором
Это я когда тестировал скрипт, для того, что б не трогать Ваш код тестировал все в файле x.php, а .bash_history результат того, что производилось подключение по SSH, для того, что б выполнить команды telnet и проверить работоспособность почты. Оба файла удалил.
Написал Илья 04.11.2013 в 22:28 Ответить
Имя:
E-mail:

Обновить картинку
Ваш комментарий будет добавлен после проверки администратором
Благодарю. Теперь буду спать спокойно.
Написал vershinasion 05.11.2013 в 02:17 Ответить
Имя:
E-mail:

Обновить картинку
Ваш комментарий будет добавлен после проверки администратором
После запуска скрипта на экране появилось его содержимое в виде текста. Почему?
Написал ullman 10.12.2013 в 10:49 Ответить
Имя:
E-mail:

Обновить картинку
Ваш комментарий будет добавлен после проверки администратором
В начале скрипта должно стоять <?php
В тексте статьи внес исправления
Написал Илья 10.12.2013 в 15:27 Ответить
Имя:
E-mail:

Обновить картинку
Ваш комментарий будет добавлен после проверки администратором
Да, изменения наступили :) Но, если честно, не могу понять, о чём скрипт говорит - о хорошем или плохом :(
Цитирую:"> 220 mail.ukraine.com.ua ESMTP ready < HELO www.compartstudio.com> 250 mail.ukraine.com.ua < auth login> 334 VXNlcm5hbWU6 < dWxsbWFuQGNvbXBhcnRzdHVkaW8uY29t> 334 UGFzc3dvcmQ6 < YXVja29oN1k=> 235 2.0.0 OK < MAIL FROM: ullman@compartstudio.com> 250 2.1.0 Ok < RCPT TO: ullman@yandex.ru> 250 2.1.5 Ok < DATA> 354 End data with . < To: ullman@yandex.ru From: ullman@compartstudio.com Subject: test Test connection. . > To: ullman@yandex.ru From: ullman@compartstudio.com Subject: test Test connection. . Failed -"
Написал ullman 10.12.2013 в 15:41 Ответить
Имя:
E-mail:

Обновить картинку
Ваш комментарий будет добавлен после проверки администратором
Ещё бы в echo добавить перевод строки для удобства чтения результата.
Техподдержка сказала, что строка send("QUIT",221); дает ошибку синтаксиса и её можно удалить.
Как бы то ни было, если сообщение от скрипта не проходит, то можно говорить, что почта не работает?
Написал ullman 11.12.2013 в 08:30 Ответить
Имя:
E-mail:

Обновить картинку
Ваш комментарий будет добавлен после проверки администратором
Для удобства чтения результата добавлен перевод строки. Если скрипт не работает Вы можете написать в техподдержку адрес скрипта с просьбой проверить по какой причине не работает отправка почты.
Написал Илья 13.12.2013 в 17:18 Ответить
Имя:
E-mail:

Обновить картинку
Ваш комментарий будет добавлен после проверки администратором

Добавить комментарий
Имя:
E-mail:

Обновить картинку
Ваш комментарий будет добавлен после проверки администратором.
Внимание! Чтобы ответить на существующий комментарий, пожалуйста, нажмите на кнопку Ответить, которая находится под соответствующим комментарием.

Другие полезные статьи:

Горячая линия
(044) 392 74 33 другие города
Copyright © 2006—2017 ООО "Хостинг «Украина»"

Все материалы данного сайта являются объектами авторского права.
Запрещается копирование, распространение или любое иное использование информации и объектов без письменного согласия правообладателя.
Нашли опечатку на странице - выделите ее и нажмите Ctrl+Enter
Идёт обновление информации, подождите...