Zapewne każdy programista zastanawiał się jak działają bramki SMS dostępne w sieci. Także i mnie to interesowało, bowiem poznanie sposobu na darmowe rozsyłanie wiadomości SMS byłoby zdecydowanie cenną i przydatną wiedzą – do weryfikacji użytkowników, do zwiększenia bezpieczeństwa, wysyłania informacji, reklam i powiadomień oraz szeregu innych zastosowań.
W dzisiejszym wpisie przedstawię jak szybko i prosto wysyłać wiadomości SMS do wielu operatorów z Polski i reszty świata z wykorzystaniem PHP.
Wysyłanie SMS w PHP – jak to działa?
Mimo iż temat wydaje się być skomplikowanym, zwłaszcza gdy mowa o mnóstwie operatorów na całym świecie, to możliwe jest wysyłanie SMS-ów równie łatwo jak maile! Jakby tego było mało, do wysyłania takowych SMS-ów posługujemy się wbudowaną w PHP funkcją… mail.
Funkcja ta jest znana każdemu programiście PHP:
1 | bool mail ( string $to , string $subject , string $message [, string $additional_headers [, string $additional_parameters ]] ) |
Chcąc wysłać wiadomość SMS do znajomego posiadającego numer w sieci Plus musimy użyć kodu na wzór poniższego:
1 2 3 4 5 6 | mail( '+48xxxxxxxxx@text.plusgsm.pl', '', 'Oto moja wiadomosc!', "From: Kamil <xxx@kamilbrenk.pl>\r\n" ); |
W pierwszym argumencie podajemy specjalnie spreparowany adres e-mail, drugi argument zostawiamy w spokoju, w kolejnym argumencie przekazujemy wiadomość SMS, natomiast na sam koniec podajemy nadawcę (nagłówek From). Prościej być nie mogło :-)
SMS gateways
Jak już zapewne zdążyłeś zauważyć, najważniejszym elementem jest adres e-mail, do którego wysłamy wiadomość. W adresie tym zawarte są następujące informacje:
- domena operatora, do której przekazujemy wiadomość mail,
- numer telefonu, do którego wysyłamy naszą wiadomość.
Są to specjalnie przygotowane przez operatorów adresy, pod którymi możemy wysyłać wiadomości. Bez adresów do tzw. „SMS gateways” niewiele możemy zdziałać, a przynajmniej nie w tak łatwy sposób. Na szczęście w Sieci istnieje ogrom takich adresów.
W ten sposób możemy w naprawdę bardzo łatwy sposób wysyłać wiele wiadomości SMS, przerzucając cały trud na operatorów. Niestety takie rozwiązanie ma też sporo wad:
- nie wszyscy operatorzy udostępniają SMS gateways (niektórzy natomiast pobierają opłaty – do wysyłania wiadomości potrzebny jest login i hasło),
- nie możemy ustawić numeru zwrotnego, na który mogliby odpisywać odbiorcy,
- SMS-y są wyraźnie oznaczone, że pochodzą ze specjalnego numeru i bramki internetowej (przynajmniej dla sieci Plus),
- nie można stosować polskich znaków diakrytycznych (Plus),
- zapewne są różne limity dla różnych operatorów (w długości czy ilości wysyłanych wiadomości).
Wad jest oczywiście dużo więcej, jednak jak na darmowe rozwiązanie to i tak bardzo fajna ciekawostka i być może wykorzystam ową wiedzę w którymś z przyszłych projektów.
Własna bramka w PHP
Na sam koniec w ramach niedzielnego popołudnia stworzyłem na szybko bramkę SMS dla kilkuset znalezionych w Sieci operatorów, w tym dla polskich: Plus oraz Orange :-)


Jest jeszcze jedna wada tego rozwiązania – za sms płaci odbiorca. Niestety nie mogę teraz znaleźć wpisu na ten temat.
A może kombinowałeś coś z jakimś supportem dla wszystkich sieci? Czy to już trzeba raczej załatwiać „komercyjnie” z operatorami sieci?
Dobre info i konkretna informacja, lecz ze względu na ograniczoną ilość sieci rozwiązanie nie zda egzaminu jako powiadomienie :) Może ktoś wie jak to robi Google z jego powiadomieniami sms? :>
Orange nie działa, kiedyś już próbowałem powalczyć z tym tematem. Plus OK, ale jeden operator na nasz kraj radosny, to trochę ubogo niestety.
@batman
To byłaby dość poważna wada, ale jakoś nie chce mi się w to wierzyć – można by to wykorzystywać przeciwko niczemu nieświadomym ludziom.
Ps. niestety nie mogę przetestować, bo limit wysyłania dla plusa z jednego serwera wynosi jakieś 10-15 sms-ów – nie sądziłem, że jest aż tak źle :) Wczoraj wysłałem z 10 sms-ów, bo kombinowałem z różnymi nagłówkami i opcjami, polskimi znakami, etc – jednak wydaje mi się, że kasy na konie jest tyle samo (przy czym wykupuję pakiet „Darmowe SMS-y do wszystkich sieci”).
@Kayne
Trochę poszperałem i nigdzie nie widzę adresów do SMS gateway dla innych operatorów z Polski. Co jednak ciekawe, w sieci istnieje wiele stron, które umożliwiają wysyłanie SMS-ów w oparciu o powyższy sposób (mail), ale płatnie – wtedy nie musimy się martwić czy SMS dojdzie.
@Maciej
Myślę, że Google ma podpisane umowy z operatorami telekomunikacyjnymi :-) Powyższy (darmowy) sposób do rozwiązań biznesowych na pewno się nie nadaje, lecz już płatne SMS gateway jak najbardziej.
@Ender
Racja, dość skromnie wygląda sytuacja dla Polski. W płatnych rozwiązaniach tego typu już widziałem sporo naszych operatorów (przy czym kosmiczne ceny, chyba że zamawiamy pakiet sms-ów za ponad 1000 EUR).
Inni operatorzy też powinni dac jakieś takie maile do wysyłania smsów. Tutaj, niewątpliwie PLUS ma plusa :)
Hobbystycznie rozwiązanie bardzo fajne i można się bawić. Przy integracjach z aplikacjami najlepiej zainwestować w dedykowane rozwiązania, typu http://www.smsapi.pl/, banalna integracja, cena 7gr lub 17gr za wersje z nadawca, to tak naprawdę śmieszne stawki.
@shpyo
Racja – przed chwilą szukałem po innych operatorach i nic nie znalazłem, więc Plus jest chyba tutaj wyjątkiem.
@Krzysiek
Dokładnie, do zabawy takie rozwiązanie jak najbardziej spoko – na własne cele możemy zrobić np. prosty skrypt, który codziennie wieczorem jest odpalany cronem i wysyła sms z podsumowaniem dnia: ilością zarobków z reklam, ilość komentarzy na blogu i inne pierdoły (o ile ktoś ma numer w Plusie :D).
Jeśli mowa o biznesowych rozwiązaniach, mamy kilka opcji:
Fajny artykuł, byłem ciekaw jak działają takie bramki
Ten sposób jest już znano od dość dawna, ja to odkryłem kiedyś jak za pomocą jakiejś usługi wysyłałem maila z telefonu i po odpowiedzi na tego maila przyszedł do mnie sms.