Как отправлять уведомления с сайта по SMS? Отправка сообщений с сайта


Как отправлять уведомления с сайта по SMS? / Хабр

На днях озаботился доставкой SMS уведомлений с нашего сайта по абонентскому обслуживанию компьютеров в Киеве, пользователи создают тикеты, администраторы должны уведомляться о проблеме у клиента моментально.

Уже сейчас работает уведомление по e-mail, icq. Но как быть, если администратор в дороге, и не имеет доступа к почте и мессенджеру? Нужно сделать уведомление SMSкой. Это будет полезно как админу, так и пользователю, т.к. последний сможет уведомиться об обработке его проблемы/заявки.

Вариантов, как оказалось, несколько.

  1. Воспользоваться таблицей email2sms гейтов сотовых операторов, таковые есть у Киевстар и UMC (МТС). Но оператор Life :) — suxx, поскольку такого гейта в пользование не предоставляет. Поэтому этот вариант отправки уведомлений отпадает :( Ну и на операторов в других странах (Россия) таблицу email2sms гейтов составить вопрос еще тот.
  2. Непростой, но достаточно правильный способ. Подключаем мобильник к серверу, ставим демон умеющий работать по ком-шнурку с телефоном и отправлять смски. Главное не забывать пополнять счет мобильника.

    Минусы: купить мобильник, поехать в дата-центр и втыкнуть мобильник в сервер. Не факт, что из гермозоны будет ловить сигнал. Мобильник должен быть постоянно подключен к зарядному устройству.

    Плюсы: невысокая стоимость смсок, стабильная доставка сообщений.

  3. Самый правильный способ: использовать API SMS Gateway и коммуницировать с гейтом по протоколам SMTP, SMPP, HTTP, SOAP и так далее. Дополнительно есть возможность назначить Caller-ID, например, «IT-Premium», что очень прикольно, когда получаешь сообщение и оно помечено как отправленное от этого адресата, а не от обычного номера. Первый в гугле с pagerank 7 попался clickatell.com И понятно почему: наиболее богатый возможностями API и недорогой в сравнении с остальными провайдерами. К слову, за 400 смсок в Украину(это минимум, который можно купить) цена около $25, что вполне приемлемо. И даже на github есть отличный gem для легкой работы из Ruby с API clickatell.com.

После активации аккаунта на clickatell.com дали 10 тестовых кредитов (читай смсок). Поставил вышеописаный ruby gem, протестил отправку уведомления с сайта, и, о чудо, смска пришла в течение 10-20 секунд.

Все, думаю, будем юзать на сайте. И пошел покупать кредиты при помощи visa кредитки Приватбанка.

Пробую трансфер с кредитки… и получаю Your recent purchase of Clickatell credits was not successful. Please find the details of the attempted transaction below:

Payment ID: 277682

Your transaction may have failed for a number of reasons:

1. Issuing bank does not allow internet payments 2. Visa, Master or Amex declined the transaction 3. Card type not recognised 4. Incorrect details entered on credit card form 5. Expired Credit Card 6. Insufficient funds or limitations on usage of the funds 7. Transaction not approved by fraud screening system 8. Invalid Card

После переписки с суппортом выясняется, что Украина по-дефолту в списке неблагонадежных стран, и платежи с нее не принимаются. У меня не сработали платежи ни Visa, ни Paypal. А с остальными странными способами платежей, такими как Wire Transfer в зимбабвийских тугриках (!) т.к. их банк находится в Южной Африке, я так и не разобрался (думаю что мой банк тоже будет хлопать глазами при слове зимбабве), плюс еще немаленькая комиссия за swift платеж :(

Посему вопрос в многоуважаемой аудитории хабра: какой наиболее правильный способ реализовать уведомление по смс администраторов и пользователей без привязки к sms2email гейтам провайдеров (не у всех они есть)?

А если кто поможет с платежом на clickatell.com, буду крайне благодарен и, конечно, компенсирую затраты банковским переводом на ваш счет, и в знак признательности поставлю вашу ссылку на моем сайте. Для связи по этому вопросу предлагаю воспользоваться хабрапочтой или же электропочтой .

Спасибо за внимание, подозреваю что тема отправки уведомлений волнует не меня одного.

UPDATE: подытожим собранные в каментах ссылки на SMS Gateway:

smsonline.rusmsc.rusmster.runapishi.rusmstraffic.rusmsmail.ruwww.sms4b.ruyakoon.com terasms.rusms.privatbank.ua однако без API и только для массовых рассылок

habr.com

Шаблон отправки сообщений с сайта

Статья устарела. Используйте метод Email::send().

Для получения писем от посетителей сайта, можно воспользоваться данной формой. При этом электронный адрес получателя в коде странички не приводится, а значит он не доступен для спамеров.

Шаблон с предобработчиком шаблона (mail.tpl): # Предобработчик шаблона <?php if ($_POST['message']) { $subject = 'message from site'; # HTTP-заголовки для отправки сообщения в формате HTML $headers = "MIME-Version: 1.0\n"; $headers .= "Content-type: text/html; charset=utf-8\n"; $headers .= "X-Priority: 3\n"; $headers .= "X-MSMail-Priority: Normal\n"; $headers .= "X-Mailer: php\n"; # Сообщение в формате HTML $msg = " <!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.0 Transitional//EN'> <html> <head> <meta http-equiv='Content-Type' content='text/html; charset=utf-8' > </head> <body> <h4>$dat[1]</h4> <p>{$_POST['message']}</p> </body> </html> "; # Отправка сообщения и формирование отчета if (mail($dat[2], $subject, $msg, $headers)) $notice = "Ваше сообщение отправлено"; else $notice = " Ваше сообщение отправить не удалось. Попробуйте повторить позднее. "; } ?> # Непосредственно шаблон <?php echo " <form action='?' method='post'> {$dat['edit']} {$notice} $dat[1] <textarea name='message'></textarea><br> <input type='submit' value='OK'> </form> "; ?>

Дескриптор шаблона (mail.tdd):

<?php $titles[1] = 'Название формы'; $titles[2] = 'Email для получения сообщений с сайта'; $types[1] = 'varchar(255)'; $types[2] = 'varchar(99)'; ?>
См. также

bloxcms.net

Блог web-мастера » Архив сайта » Отправка сообщения с сайта на e-mail

В очередной раз встретил на форуме сообщение: “Скажите, как сделать скрипт на php для отправки на мыло через сайт. Например, я ввожу на сайте в поля нужный текст и нажимаю “Отправить”. После чего текст отправляется кому-нибудь на e-mail. Очень нужно!“. Быстро набросал простенький скрипт отправки сообщений на e-mail. Когда в следующий раз услышу такой вопрос - буду давать ссылку на эту страницу.

Для отправки почтового сообщения создадим HTML-форму, состоящую из трех текстовых полей для имени автора name, его e-mail адреса email, темы сообщения subject и текстовой области message для ввода содержимого письма.

Письмо будем отправлять по адресу администратора сайта $admin = ‘[email protected]

<?phpsession_start();$admin = '[email protected]';

if ( isset( $_POST['sendMail'] ) ) {  $name  = substr( $_POST['name'], 0, 64 );  $email   = substr( $_POST['email'], 0, 64 );  $subject = substr( $_POST['subject'], 0, 64 );  $message = substr( $_POST['message'], 0, 250 );    $error = '';  if ( empty( $name ) ) $error = $error.'<li>Не заполнено поле "Имя"</li>';  if ( empty( $email ) ) $error = $error.'<li>Не заполнено поле "E-mail"</li>';  if ( empty( $subject ) ) $error = $error.'<li>Не заполнено поле "Тема"</li>';  if ( empty( $message ) ) $error = $error.'<li>Не заполнено поле "Сообщение"</li>';  if ( !empty( $email ) and !preg_match( "#^[0-9a-z_\-\.][email protected][0-9a-z\-\.]+\.[a-z]{2,6}$#i", $email ) )    $error = $error.'<li>поле "E-mail" должно соответствовать формату [email protected]</li>';  if ( !empty( $error ) ) {    $_SESSION['sendMailForm']['error']   = '<p>При заполнении формы были допущены ошибки:</p><ul>'.$error.'</ul>';    $_SESSION['sendMailForm']['name']    = $name;    $_SESSION['sendMailForm']['email']   = $email;    $_SESSION['sendMailForm']['subject'] = $subject;    $_SESSION['sendMailForm']['message'] = $message;    header( 'Location: '.$_SERVER['PHP_SELF'] );    die();  }    $body = "АВТОР:\r\n".$name."\r\n\r\n";  $body .= "E-MAIL:\r\n".$email."\r\n\r\n";  $body .= "ТЕМА:\r\n".$subject."\r\n\r\n";  $body .= "СООБЩЕНИЕ:\r\n".$message;  $body = quoted_printable_encode( $body );

  $theme   = '=?windows-1251?B?'.base64_encode('Заполнена форма на сайте').'?=';  $headers = "From: ".$_SERVER['SERVER_NAME']." <".$email.">\r\n";  $headers = $headers."Return-path: <".$email.">\r\n";  $headers = $headers."Content-type: text/plain; charset=\"windows-1251\"\r\n";  $headers = $headers."Content-Transfer-Encoding: quoted-printable\r\n\r\n";    if ( mail($admin, $theme, $body, $headers) )    $_SESSION['success'] = true;  else    $_SESSION['success'] = false;  header( 'Location: '.$_SERVER['PHP_SELF'] );  die();} function quoted_printable_encode ( $string ) {   // rule #2, #3 (leaves space and tab characters in tact)   $string = preg_replace_callback (   '/[^\x21-\x3C\x3E-\x7E\x09\x20]/',   'quoted_printable_encode_character',   $string   );   $newline = "=\r\n"; // '=' + CRLF (rule #4)   // make sure the splitting of lines does not interfere with escaped characters   // (chunk_split fails here)   $string = preg_replace ( '/(.{73}[^=]{0,3})/', '$1'.$newline, $string);   return $string;}

function quoted_printable_encode_character ( $matches ) {   $character = $matches[0];   return sprintf ( '=%02x', ord ( $character ) );}?>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><title>Отправить письмо</title><meta http-equiv="Content-Type" content="text/html; charset=windows-1251"></head><body>

<?phpif ( isset( $_SESSION['success'] ) ) {  if ( $_SESSION['success'] )    echo '<p>Письмо успешно отправлено</p>';  else    echo '<p>Ошибка при отправке письма</p>';  unset( $_SESSION['success'] );}if ( isset( $_SESSION['sendMailForm'] ) ) {  echo $_SESSION['sendMailForm']['error'];  $name    = htmlspecialchars ( $_SESSION['sendMailForm']['name'] );  $email   = htmlspecialchars ( $_SESSION['sendMailForm']['email'] );  $subject = htmlspecialchars ( $_SESSION['sendMailForm']['subject'] );  $message = htmlspecialchars ( $_SESSION['sendMailForm']['message'] );  unset( $_SESSION['sendMailForm'] );} else {  $name    = '';  $email   = '';  $subject = '';  $message = '';}?>

<form action="<?php echo $_SERVER['PHP_SELF'] ?>" method="POST"><table><tr><td>Имя:</td><td><input type="text" name="name" maxlength="64" value="<?php echo $name ?>" /></td></tr><tr><td>E-mail:</td><td><input type="text" name="email" maxlength="64" value="<?php echo $email ?>" /></td></tr><tr><td>Тема:</td><td><input type="text" name="subject" maxlength="64" value="<?php echo $subject ?>" /></td></tr><tr><td>Сообщение:</td><td><textarea name="message" rows="5" cols="30"><?php echo $message ?></textarea></td></tr><tr><td>&nbsp;</td><td><input type="submit" name="sendMail" value="Отправить" /></td></tr></table></form>

</body></html>

Чтобы понять, зачем здесь сессия и редирект после вызова функции mail(), надо прочитать статью Обработка ошибочного заполнения формы.

Попробуйте убрать редирект и поработать со скриптом. Во-первых, если после отправки формы нажать Refresh, то браузер выдаст сообщение о том, что страницу обновить невозможно без повторной отсылки данных. Во-вторых, если после отправки сообщения уйти на другую страницу, то при нажатии на кнопку Back (т.е. при попытке вернуться на POST-страницу) опять будет выведено сообщение о необходимости повторной отсылки данных. Мало того, что это совершенно нелогично и неудобно с точки зрения пользователя (он ведь уже отправил данные!), так ещё и если он в этот момент нажмёт “OK”, то данные формы будут отправлены повторно. Соответственно, и письмо будет отправлено еще раз.

Проблем этих можно избежать, если после обработки POST-запроса сразу же делать GET-редирект.

Теперь по поводу сессии. В случае ошибочного заполнения пользователем формы, хорошим тоном считается показать ему эту же форму, заполненною введёнными данными (чтобы пользователю не пришлось заполнять всё заново) и снабжённую сообщением об ошибке. При этом ошибочно введённые данные передаются через механизм сессий.

Ссылки по теме:

blog.webmasterschool.ru

Как отправить SMS сообщение с сайта

sms Как отправить SMS сообщение с сайтаПривет уважаемые читатели моего блога, сегодня я хочу рассказать немного про СМС сервисы, или про то как отправить СМС сообщение с сайта. Сегодня, привязка мобильного телефона(номера) к сайту, столь же актуальна как и привязка емаил. Некоторые крупные порталы и социальные сети, почти полностью перешли на регистрацию пользователей и их дальнейшую авторизацию на сайте, по средствам номера мобильного телефона, используя его в качестве логина, а СМС с кодом в качестве ключа доступа.

Для того, чтобы отправить СМС сообщение с сайта, необходимо зарегистрироваться на сайте СМС-шлюза(ниже рассмотрим несколько из них) — это сервис предоставляющий возможность автоматически отправить СМС сообщение любому количеству пользователей вашего сайта. После регистрации и пополнения баланса, все что вам нужно это передать сервису команду(с помощью REST API, HTTP запроса или SMTP) на отправку сообщения абоненту, указав при этом номер мобильного телефона и текст сообщения.

Где это может пригодиться

  1. Регистрация на сайте с подтверждением номера телефона, последующая авторизация по СМС коду доступа, а также восстановление доступа в случае утраты пароля;
  2. Двухфакторная авторизация на сайте, повышающая степень защищенности аккаунта пользователя, от возможного взлома;
  3. Подтверждение по СМС тех или иных действий производимых пользователем на сайте. Например перевод денежных средств со своего кошелька на сайте, на кошелек другого пользователя;
  4. Получение важных уведомлений, новостей;
  5. Подтверждение по СМС также позволяет отсеять на этапе регистрации: ботов, фейков, спамеров, клонов и т.д., или во всяком случае сделает для них процесс регистрации нового аккаунта несколько более затруднительным, нежели чем с простым указанием емаил адреса.

Краткий обзор СМС сервисов

Я в своих проектах использую следующие СМС сервисы: sms.ru, websms.ru, smsaero.ru, smsbliss.ru, у каждого из них есть свои преимущества и недостатки. Основные критерии по которым я буду сравнивать эти четыре сервиса, это стоимость одного СМС сообщения по России, сложность подключения к системе(юридические аспекты), сложность подключения с технической точки зрения(интеграция на сайт), количество способов отправки сообщения, дополнительные инструменты, качество работы службы поддержки.

sms.ruот 1.50 р.ДаЛегкоХорошая документацияПримерыМодулиSMTPHTTPViberинтеграция с CRMСтоп-листыавтоматикаAPIпартнерская программа5 баллов
websms.ruот 0.90 р.ДаЛегкоХорошая документацияПримерыМодулиSMTPSOAPHTTPXMLинтегр. 1CWeb-интерфейсрасписаниевиджетсмс-подпискамодераторыпартнерская программа4 балла
smsaero.ruот 1.30 р.Да/НетСреднеДокументацияМодулиHTTPSMPPViber рассылкаHLR-запросыСбор контактов4 балла
smsbliss.ruот 1.30 р.Да/НетСреднеДокументацияHTTP(REST, JSON)SMTPВходящие SMSпартнерская программа5 баллов

Касаемо стоимости СМС сообщений надо отметить, что чем больше сообщений вы отправляете или покупаете пакет сообщений большего размера, тем меньше стоимость одного СМС. У всех сервисов есть гибкая система скидок. В сводной таблице я сравниваю цены из расчета отправки одного СМС, без учета возможного дисконта. Также у некоторых операторов предусмотрена оправка дешевых СМС но с некоторыми ограничениями,  такие варианты отправки я также не рассматриваю.

Примеры отправки на PHP

И так, вы зарегистрировались на подходящем для вас СМС сервисе, пополнили баланс и заключили договор. Теперь можно отправить сообщение из PHP скрипта, одним из следующих способов:

sms.ru HTTP запрос

<?php $url = 'http://sms.ru/sms/send?api_id=YOU_LOGIN&to=+74955555555&text=Текст_сообщения&from=Имя_Отправителя'; $result = file_get_contents($url); ?>

websms.ru SMTP

<?php $message = "user=YOU_LOGIN \r\n pass=YOU_PASS \r\n fromPhone=Имя_Отправителя \r\n tels=+74955555555 \r\n mess=Текст сообщения \r\n"; mail("[email protected]", "", $message, "From: [email protected]"); ?>

smsaero.ru HTTP запрос

<?php $url = 'https://gate.smsaero.ru/send/?user=YOU_LOGIN&password=YOU_PASS&to=+74955555555&text=Текст_сообщения&from=Имя_Отправителя'; $result = file_get_contents($url); ?>

smsbliss.ru SMTP

<?php $message = "Текст сообщения \r\n YOU_LOGIN: Test \r\n password: YOU_PASS \r\n sender: Имя_Отправителя"; mail("[email protected]", "", $message, "From: [email protected]"); ?>

Обозначения в приведенных примерах:74955555555 — номер телефона абонента, которому следует отправить СМС сообщение;YOU_LOGIN — ваш логин на сайте сервиса или ключ API;YOU_PASS — ваш пароль на сайте сервиса;Имя_Отправителя — имя отправителя состоящее из 11 символом латинского алфавита или цифр, которое абонент увидит в качестве отправителя;Текст сообщения — 70 кириллических или 160 латинских символом СМС сообщения (можно и больше, но тогда сервис засчетает сообщение как за 2 и более).

Обращайтесь за помощью!

Если требуется помощь в подключении СМС сервиса к вашему сайту, то буду рад с вами поработать! На что вы можете рассчитывать?

  1. Разработка эксклюзивного функционала для вашего сайта;
  2. Реализация ваших идей;
  3. Интеграция готовых модулей;
  4. Настройка СМС сервиса;
  5. Поддержка.

Похожие записи

rche.ru

Отправка писем с сайта. Готовое решение. Почтовый скрипт

Предлагаю готовое решение для отправки сообщений с сайта. Любой пользователь сможет легко отправить письмо с любой страницы Вашего сайта, вызвав POP окно по размещенной ссылке или через меню. Предусмотрена КАПТЧА для защиты от спама.

Для установки почтового скрипта необходимо совершить всего три действия:1. Укачать адрес вашего почтового ящика в файле config.php2. Залить папку со скриптом на сервер хостинга.3. Разместить на сайте (в меню) ссылки на вызов формы обратной связи.Системные требования к хостингу: PHP 4.0.6 и выше, библиотека GB для каптчи (практически на всех хостингах).

Установка завершена.

Теперь форма обратной размещена по адресу: http://ВАШСАЙТ.ru/feedback/ Вызвать ее можно используя скрипт всплывающего POP окна. Для этого использовать готовый код в прилагаемом файле HTML страницы link.html.

Конечно проще купить готовый сайт на основе CMS, допустим: Wordpress, Drupal или 1с-Битрикс, где уже встроены системы для отправки сообщений и писем с сайта. Но для тех вебмастеров, которые не ищут легких путей в вебстроительстве, возможно будет полезен скрипт обратной почтовой связи со своего сайта, построенного на html файлах.

Оформление формы обратной связи.

Дизайн Предложенная форма обратной связи удобна тем, что может быть внедрена в любой дизайн сайта, не изменяя при этом структуру страницы. Файлы скрипта лежат в отдельной папке и не мусорят структуру сайта. Внешний вид формы настраивается из файла style.css

Защита от спамаПри отправке писем с сайта предусмотрен ввод защитного кода КАПТЧА, что предупредит намерения злоумышленников.Дизайн каптчи можно настроить в файле kcaptcha_config.php

В архиве 2 варианта отправки писем с сайта. Второй вариант feedback2 - предусматривает получение дубликата письма отправителем. Т.е. посетитель сайта, отправивший сообщение, получит его копию на свой (указанный) email.Будьте внимательны при установке feedback2: Вашим сайтом могут воспользоваться недоброжелатели для отправки писем от Вашего имени.

Подробное описание установки формы обратной связи на свой сайтнайдете в скаченном архиве:

1. В файле feedback\config.php во 2 строке заменить Ваш@EMAIL.ru на адрес своей почты, на которую желаете получать письма.

2. Залить папку feedback на сайт целиком. Название можно изменить.

Теперь почта установлена и Вы можете отправлять письма с сайта используя адрес: http://ВАШСАЙТ.ru/feedback/index.php или http://ВАШСАЙТ.ru/feedback/в зависимости от того, где лежит залитая папка.Можно размещать в любой директории, лишь бы ссылка вызова формы вела к файлу index.php или папке feedback. Зависит от директив файла .htaccess, если он существует.

Можно проверить работу формы прямо с компьютера, изменив адрес в файле link.html и запустив его в браузере.

Теперь сформируем ссылку, которую можно использовать с любой страницы сайта и POP окно для открытия формы обратной связи.

3. В файле link.html (вне папки feedback) лежит готовая ссылка и скрипт для вызова POP окна. Они выделены комментариями. - Скрипт вставьте между тегами head на той странице, с которой будет вызываться форма обратной связи. - В ссылке замените адрес на тот, по которому находится загруженная папка feedback на хостинге. При необходимости укажите путь к файлу http://??????/feedback/index.php.Отредактированную ссылку можно разместить в любом месте сайта, на любой странице.

Изощрения

Изменить оформление окна обратной связи можно в файле style.css и feedback/index.php Изменить сообщения об ошибках при отправке писем можно в файле feedback\config.php

Если Вы хотите отказаться от POP окна, то форму обратной связи можно вставить на отдельную страницу сайта.Для этого скопируйте в файле feedback/index.php содержимое между комментариями:<!---Код для формы обр. связи--->..............<!---конец Код для формы обр. связи--->и вставьте в нужное место.

При этом возможно придется отказаться от параметров таблицы table, div или изменить их. А так же поработать с параметрами в файле style.css и путями его прописки. Но отпадет необходимость в пункте 3.Все зависит от Вашего умения и вкуса.

Многие параметры адаптированы к капризам браузера Internet Exploler.Также проверено в работе и адаптировано к браузерам: Mozilla Firefox, Opera, Google Chrome, Safari.

Можете удалить дополнительные кнопки: "Обновить форму" и "Закрыть окно", по отдельности или целиком. Закомментированы в файле feedback/index.php: <!---Доп. кнопки--->

Если пожелаете, то вставьте после метатег против индексации страниц поисковиками:<meta name="robots" content="noindex">

Скачать бесплатно готовую форму обратной связи: feedback.rar [325,68 Kb] (cкачиваний: 2948)

sitey.ru