|
|
SMS с сайта
В наше время SMS широко применяются в веб-технологиях. Их используют для того, чтобы сообщить клиентам о свежих новостях, событиях и продуктах. Именно поэтому растёт рост разработчиков, которые интересуются данным инструментом. В этом уроке мы рассмотрим фундаментальные основы отправки текстовых сообщений при помощи PHP.
ВступлениеДля того, чтобы отправить SMS через PHP не нужно много трудиться. Ниже вы можете увидеть схему, которая показывает весь процесс отправки текстового сообщения с веб-приложения на беспроводное устройство. Начинаем разбор:
Email в SMSДля того, чтобы превратить email сообщение в SMS, вам понадобятся 2 вещи:
Функция mail()Давайте двигаться дальше. Для отправки SMS сообщений мы можем использовать всеми известную функцию mail(), которая имеет следующую сигнатуру: bool mail ( string $to , string $subject , string $message [, string $additional_headers [, string $additional_parameters ]] ) Тут вы можете узнать о ней больше.
mail( '3855550168@vtext.com', '', 'Testing' ); ТестируемДавайте же проведём тест и убедимся, что через функцию mail() можно отправлять SMS сообщения. Используем следующий код:<?php var_dump( mail( '##########@vtext.com', '', 'This was sent with PHP.' ) ); // bool(true) ?>Сообщение, которое пришло на мой мобильный телефон выглядит так: Как вы видите, сообщение пришло через систему Gmail. Это произошло из-за того, что я выставил соответствующие настройки для отправки сообщений с локальной машины. Добавляем ЮзабилитиСтруктура Теперь я хочу предложить вам создать небольшую форму для отправки SMS с сайта. Она имеет следующую структуру:<!DOCTYPE html> <head> <meta charset="utf-8" /> </head> <body> <div id="container"> <h1>Sending SMS with PHP</h1> <form action="" method="post"> <ul> <li> <label for="phoneNumber">Phone Number</label> <input type="text" name="phoneNumber" id="phoneNumber" placeholder="3855550168" /></li> <li> <label for="carrier">Carrier</label> <input type="text" name="carrier" id="carrier" /> </li> <li> <label for="smsMessage">Message</label> <textarea name="smsMessage" id="smsMessage" cols="45" rows="15"></textarea> </li> <li><input type="submit" name="sendMessage" id="sendMessage" value="Send Message" /></li> </ul> </form> </div> </body> </html> СтильДавайте немного её оформим:body { margin: 0; padding: 3em 0; color: #fff; background: #0080d2; font-family: Georgia, Times New Roman, serif; } #container { width: 600px; background: #fff; color: #555; border: 3px solid #ccc; -webkit-border-radius: 10px; -moz-border-radius: 10px; -ms-border-radius: 10px; border-radius: 10px; border-top: 3px solid #ddd; padding: 1em 2em; margin: 0 auto; -webkit-box-shadow: 3px 7px 5px #000; -moz-box-shadow: 3px 7px 5px #000; -ms-box-shadow: 3px 7px 5px #000; box-shadow: 3px 7px 5px #000; } ul { list-style: none; padding: 0; } ul > li { padding: 0.12em 1em } label { display: block; float: left; width: 130px; } input, textarea { font-family: Georgia, Serif; } Пишем скриптЭто сама сложная часть данного урока. Прошу внимания:<?php if ( isset( $_REQUEST ) && !empty( $_REQUEST ) ) { if ( isset( $_REQUEST['phoneNumber'], $_REQUEST['carrier'], $_REQUEST['smsMessage'] ) && !empty( $_REQUEST['phoneNumber'] ) && !empty( $_REQUEST['carrier'] ) ) { $message = wordwrap( $_REQUEST['smsMessage'], 70 ); $to = $_REQUEST['phoneNumber'] . '@' . $_REQUEST['carrier']; $result = @mail( $to, '', $message ); print 'Сообщение было отослано ' . $to; } else { print 'Заполните все поля.'; } } ?>
Финальный код<?php if ( isset( $_REQUEST ) && !empty( $_REQUEST ) ) { if ( isset( $_REQUEST['phoneNumber'], $_REQUEST['carrier'], $_REQUEST['smsMessage'] ) && !empty( $_REQUEST['phoneNumber'] ) && !empty( $_REQUEST['carrier'] ) ) { $message = wordwrap( $_REQUEST['smsMessage'], 70 ); $to = $_REQUEST['phoneNumber'] . '@' . $_REQUEST['carrier']; $result = @mail( $to, '', $message ); print 'Сообщение было отослано ' . $to; } else { print 'Заполните все поля.'; } } ?> <!DOCTYPE html> <head> <meta charset="utf-8" /> <style> body { margin: 0; padding: 3em 0; color: #fff; background: #0080d2; font-family: Georgia, Times New Roman, serif; } #container { width: 600px; background: #fff; color: #555; border: 3px solid #ccc; -webkit-border-radius: 10px; -moz-border-radius: 10px; -ms-border-radius: 10px; border-radius: 10px; border-top: 3px solid #ddd; padding: 1em 2em; margin: 0 auto; -webkit-box-shadow: 3px 7px 5px #000; -moz-box-shadow: 3px 7px 5px #000; -ms-box-shadow: 3px 7px 5px #000; box-shadow: 3px 7px 5px #000; } ul { list-style: none; padding: 0; } ul > li { padding: 0.12em 1em } label { display: block; float: left; width: 130px; } input, textarea { font-family: Georgia, Serif; } </style> </head> <body> <div id="container"> <h1>Sending SMS with PHP</h1> <form action="" method="post"> <ul> <li> <label for="phoneNumber">Phone Number</label> <input type="text" name="phoneNumber" id="phoneNumber" placeholder="3855550168" /></li> <li> <label for="carrier">Carrier</label> <input type="text" name="carrier" id="carrier" /> </li> <li> <label for="smsMessage">Message</label> <textarea name="smsMessage" id="smsMessage" cols="45" rows="15"></textarea> </li> <li><input type="submit" name="sendMessage" id="sendMessage" value="Send Message" /></li> </ul> </form> </div> </body> </html> Проблемы, которые могли у вас возникнутьОшибки на локальном хостеДля того, чтобы пользоваться функцией mail у вас должен быть настроен локальный почтовый сервер. Если он у вас есть, то отправка сообщения произойдёт успешно. Если нет, то вы получите сообщение типа этого: Warning: mail() [function.mail]: Failed to connect to mailserver at "localhost" port 25, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set() in C:\wamp\www\sms\mail-test.php … для того, чтобы всё заработало, вам необходимо поставить mail сервер, но это не входит в рамки данного урока. Если у вас на локальной машине установлен XAMPP http://www.apachefriends.org/en/xampp.html, то вы с лёгкостью исправите ситуацию. Если же у вас WAMP, MAMP, LAMP, SAMP или OAMP, попробуйте установить Mercury MailPHPMailerДля того, чтобы не возиться с локальным почтовым сервером, я предлагаю воспользоваться PHPMailer-ом http://phpmailer.worxware.com/. Ниже я приведу пример подключения PHPMailer-а к Gmail SMTP серверу, через который вы сможете отправлять сообщения. Данный код надо просто заинклюдить в ваш скрипт:require 'class.php'; // Создаём объект класса $mail = new PHPMailer(); // Настройка SMTP $mail->IsSMTP(); // Настройка SMTP подключения $mail->SMTPDebug = 2; // Вывод отладочной информации $mail->SMTPAuth = true; // Подключение к SMTP требует авторизацию $mail->SMTPSecure = "tls"; // Подключаемся, используя TLS $mail->Host = "smtp.gmail.com"; $mail->Port = 587; $mail->Encoding = '7bit'; // Авторизация $mail->Username = "email.address@gmail.com"; // Логин $mail->Password = "password"; // Пароль // Проверка $mail->Subject = "Testing"; // Тема $mail->Body = "Testing"; // Сообщение // Отправка $mail->AddAddress( "##########@vtext.com" ); // Получатель var_dump( $mail->send() ); // Отправить! ВыводКонечно, существуют и другие техники отправки текстовых сообщений. Этот способ подойдёт тем, кто будет отправлять не больше 1000 SMS в месяц. Альтернативы данной системы:
Источник урока: www.net.tutsplus.com/tutorials/php/how-to-send-text-messages-with-php/ ссылка устарела Перевел: Станислав Протасевич Урок создан: 23 Февраля 2011 | SMS бесплатно Разовый телефон SMS на компьютер SMS на интернет-пейджерах Как удалить баннер за SMS Забудь мой номер Как закрыть страницу сайта SMS регистрация Отписка от SMS |