• Strona główna
  • Curriculum Vitae
  • O mnie
  • Przykład: Gramatyka w PHP
  • Przykład: Kompresja CSS
  • Przykład: Kompresja JavaScript
  • Przykład: Skracanie linków
  • Przykład: Wykrywanie serwera HTTP
  • Przykład: Własna bramka SMS
  • Mapa strony
  • Kontakt
Niebieski Pomarańczowy Zielony Różowy Fioletowy

Wysyłanie wiadomości SMS w PHP

Opublikowane 12 września 2011. Autor: Kamil Brenk. Wizyt: 21 190.

Kategorie: PHP
Tematyka: jQuery w praktyce, PHP, praktyczne skrypty, programowane ciekawostki, SMS

wrz 12

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 :-)

Komentarze (17)

  1. batman 12 września 2011

    Jest jeszcze jedna wada tego rozwiązania – za sms płaci odbiorca. Niestety nie mogę teraz znaleźć wpisu na ten temat.

  2. Kayne 12 września 2011

    A może kombinowałeś coś z jakimś supportem dla wszystkich sieci? Czy to już trzeba raczej załatwiać „komercyjnie” z operatorami sieci?

  3. Maciej 12 września 2011

    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? :>

  4. Ender 12 września 2011

    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.

  5. Kamil Brenk 12 września 2011

    @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).

  6. shpyo 12 września 2011

    Inni operatorzy też powinni dac jakieś takie maile do wysyłania smsów. Tutaj, niewątpliwie PLUS ma plusa :)

  7. Krzysiek 12 września 2011

    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.

  8. Kamil Brenk 12 września 2011

    @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:

    • poszukać płatnych sms gateway (mało opłacalne, bo nie widziałem żadnego polskiego rozwiązania, a co za tym idzie – płacimy w euro lub dolarach)
    • skorzystać z gotowych rozwiązań, którego przykładem jest wymieniony przez Ciebie smsapi.pl
    • zainwestować w telefon, specjalny kabel do komputera oraz oczywiście komputer, dopisać proste oprogramowanie lub poszukać w Sieci darmowych rozwiązań (pewnie coś by się znalazło) i wysyłać na własną rękę :-)
  9. Bartosz 19 września 2011

    Fajny artykuł, byłem ciekaw jak działają takie bramki

  10. Robson 10 grudnia 2011

    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.

  11. nss 23 maja 2012

    Tak jak ktoś wcześniej wspomniał – są płatne, niedrogie rozwiązania dla wszystkich sieci, idealnie nadają się dla e-commerce. Pozdrawiam

  12. gosc 7 lipca 2012

    Wszystko ladnie pieknie, tylko co do bramki plusa jest jeszcze jedno ograniczenie – ilosc sms wyslanych z jednego ip w ciagu dnia. Uzywajac funkcje mail trzeba sie z tym liczyc, ze po wyslaniu ok. 5 sms dziennie mozemy zapomniec o dalszym rozsylaniu sms tym sposobem.

  13. Kamil Brenk 8 lipca 2012

    @gosc: wiem, wspomniałem o limicie Plusa w komentarzu powyżej – z tego co widziałem limit jest na 10-15 smsów dziennie (nie liczyłem ile dokładnie).

    Co do drugiej części komentarza – nie zauważyłem, żeby funkcja mail była problemem dla tak małej ilości wysyłanych mailów (choć żaden problem przerzucić się na sendmail, SMTP czy inny qmail).

  14. zombi 18 października 2012

    Witam,
    dzięki za artykuł.
    Szkoda, że nie masz reklam, bo bym kliknął w podziekowaniu….:)

  15. Kamil Brenk 18 października 2012

    @zombi: dzięki, miłe słowo w zupełności wystarczy :)

  16. SMS Owicz 7 grudnia 2013

    Chcialem przetestowac ten Twoj „niedzielny” projekt ale niestety SMSy nie dotarly do odbiorcy. Czy ta bramka jeszcze dziala ? Dodam, ze wyslalem SMS do sieci krajowej

  17. Piotr 22 marca 2018

    stworzyłem prostą stronkę w PHP, czy jest możliwość aby strona/serwer wysyłał wiadomości automatycznie ?, na stronie są określone wydarzenia z daną datą.. czy jest możliwe by w odpowiednim czasie sms`y wysyłały się automatycznie(to jest bez wchodzenia na stronę) ?



Kamil Brenk Blog

PHP, JavaScript, SQL, HTML

  • Informacje o blogu

    Kamil Brenk

    Blog o tworzeniu aplikacji na potrzeby sieci Web.

    Praktyczne przykłady, porady i sztuczki. PHP, SQL, AJAX, JavaScript, HTML i pochodne.

    Kanał RSS

    • Najnowsze
    • Komentarze
    • Popularne
    • Liczniki w CSS
    • Wyprzedaż książek o programowaniu!
    • Niestandardowy placeholder
    • JavaScript w modułach
    • Co dalej z blogiem?
    • Interaktywna mapa w HTML i CSS
    • Olsztyn: Jak wyseparować zawartość zassaną przez file_get_content?
    • ERMLAB: Od czegoś trzeba zacząć :) Wiele osób właśnie stawia na...
    • david: co nalezy wkleić na stronę aby plik ze stylami był ladowany...
    • krynicz: Nie jestem pewien czy dobrze to rozumiem: wpisujemy OG w...
    • yaro: Jak zmienić re_write znak "_" na "-"?
    • Piotr: stworzyłem prostą stronkę w PHP, czy jest możliwość aby...
    • MichalR: Super sprawa... bardzo przydatne.. dzieki i pozdrawiam..
    • Niestandardowe czcionki na stronie
    • Sposoby wczytywania JavaScript
    • Gramatyka w PHP, część 1
    • Umowa i zaliczka dla freelancera
    • Wysyłanie wiadomości SMS w PHP
    • Projekt aplikacji po stronie klienta
    • Własny mechanizm Feed
  • Szukajka
    Wpisz co chcesz wyszukać na stronie…
  • Kategorie
    • Apache
    • Freelancer
    • Front-end Development
    • HTML5 & CSS3
    • Inne
    • JavaScript
    • Książki
    • PHP
    • Po godzinach
    • Pozycjonowanie
    • Protokół HTTP
    • SQL
    • Wyrażenia regularne
  • Moje serwisy
    • Testy zawodowe
    • Miłość, uczucia i seks
  • Czytane blogi
    • Wojciech Sznapka
    • Wojciech Soczyński
    • Michał Wachowski
    • Tomasz Kowalczyk
    • Filip Górczyński
  • Strona główna
  • Curriculum Vitae
  • O mnie
  • Przykład: Gramatyka w PHP
  • Przykład: Kompresja CSS
  • Przykład: Kompresja JavaScript
  • Przykład: Skracanie linków
  • Przykład: Wykrywanie serwera HTTP
  • Przykład: Własna bramka SMS
  • Mapa strony
  • Kontakt

Kamil Brenk © 2010. All rights reserved.

Designed by FTL Wordpress Themes brought to you by Smashing Magazine.

Do góry ∧