Давно хотел написать. Но вот заказчику понадобилось и пришлось. Полазил по инету и вот что получилось.
Насчет сотовых компаний и их почтовых ящиков для смс можно посмотреть тут http://www.diwaxx.ru/frik/e-mail_to_sms.phpPHP код:$address = 'smtp.mail.ru'; // адрес smtp-сервера
$port = 25; // порт (стандартный smtp - 25)
$login = 'mail'; // логин к ящику
$pwd = 'pass'; // пароль к ящику
$from = 'mail@mail.ru'; // адрес отправителя
$to = '7номертелефона@sms.mgsm.ru'; // адрес получателя (об этом подробнее после кода)
$subject = c("edit1")->text; // тема сообщения
$message = c("memo1")->text; // текст сообщения
try {
// Создаем сокет
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
if ($socket < 0) {
throw new Exception('socket_create() failed: '.socket_strerror(socket_last_error())."\n");}
// Соединяем сокет к серверу
$result = socket_connect($socket, $address, $port);
if ($result === false) {
throw new Exception('socket_connect() failed: '.socket_strerror(socket_last_error())."\n");
}
// Читаем информацию о сервере
read_smtp_answer($socket);
// Приветствуем сервер
write_smtp_response($socket, 'EHLO '.$login);
read_smtp_answer($socket); // ответ сервера
// Делаем запрос авторизации
write_smtp_response($socket, 'AUTH LOGIN');
read_smtp_answer($socket); // ответ сервера
// Отравляем логин
write_smtp_response($socket, base64_encode($login));
read_smtp_answer($socket); // ответ сервера
// Отравляем пароль
write_smtp_response($socket, base64_encode($pwd));
read_smtp_answer($socket); // ответ сервера
// Задаем адрес отправителя
write_smtp_response($socket, 'MAIL FROM:<'.$from.'>');
read_smtp_answer($socket); // ответ сервера
// Задаем адрес получателя
write_smtp_response($socket, 'RCPT TO:<'.$to.'>');
read_smtp_answer($socket); // ответ сервера
// Готовим сервер к приему данных
write_smtp_response($socket, 'DATA');
read_smtp_answer($socket); // ответ сервера
// Отправляем данные
$message = "To: $to\r\n".$message; // добавляем заголовок сообщения "адрес получателя"
$message = "Subject: $subject\r\n".$message; // заголовок "тема сообщения"
write_smtp_response($socket, $message."\r\n.");
read_smtp_answer($socket); // ответ сервера
// Отсоединяемся от сервера
write_smtp_response($socket, 'QUIT');
read_smtp_answer($socket); // ответ сервера
} catch (Exception $e) {
echo "\nError: ".$e->getMessage();
}
//if (isset($socket)) {
socket_close($socket);
//}
// Функция для чтения ответа сервера. Выбрасывает исключение в случае ошибки
function read_smtp_answer($socket) {
$read = socket_read($socket, 1024);
if ($read{0} != '2' && $read{0} != '3') {
if (!empty($read)) {throw new Exception('SMTP failed: '.$read."\n");
} else {throw new Exception('Unknown error'."\n");}
}
}
// Функция для отправки запроса серверу
function write_smtp_response($socket, $msg) {
$msg = $msg."\r\n";
socket_write($socket, $msg, strlen($msg));
}
Код работает. Проверено, не жаловаться. У некоторых может быть отключена служба приема смс из инета. Уточняйте у оператора.
Для чего может пригодиться? Сможете принимать заказы, заявки, предложения, инфу от своей проги (фейкеров просьба выпить я... валерьянки).
ps подправил код. Был кривой копипаст. Сорри
не забудьте подключить библиотеку php_sockets.dll


).
Ответить с цитированием
