SMS Nachrichten mit PHP versenden
Viele große Internetportale wie Facebook oder Google senden auch SMS Nachrichten, unter anderem zur Passwortwiederherstellung. In diesem Artikel schauen wir uns an, wie wir selber ein solches Feature mit PHP in eine Anwendung einbauen.
Vorwort
SMS sind ein relativ wichtiger Kommunikationskanal, auch wenn die Bedeutung stetig sinkt. Die Tatsache, dass eine Textnachricht aus 160 Zeichen im Schnitt um die 10Cent kostet ist einfach nicht mehr zeitgemäß. Dieses Tutorial verwendet den Service TextMagic zum versenden der SMS.
Dieser Service ist nicht kostenlos und es wird ein Account benötigt, es gibt allerdings die Möglichkeit einen Testaccount zu erstellen.

API einrichten
Nachdem man einen Account erstellt hat, muss noch die PHP SMS API aktiviert werden, dazu wählt man folgende Menüpunkte: My services → API → Password. Nach Eingabe des Passworts, wird automatisch ein API Key generiert. Diesen Schlüssel braucht man später, um sich per PHP mit dem TextMagic Server zu verbinden.

Anschließend muss nur noch die PHP API heruntergeladen werden und in das gewünschte Projekt gepackt werden, von dem aus SMS gesendet werden sollen.
Auf der Downloadseite findet man direkt auch ein kleines Tutorial. Der eigentliche Versand einer SMS ist ein Kinderspiel:
require('textmagic-sms-api-php/TextMagicAPI.php');
$api = new TextMagicAPI(array(
"username" => "yourTextMeUsername",
"password" => "yourTextMePassword"
));
$text = "Your message here";
// Use this number for testing purposes. This is absolutely free.
$phones = array(9991234567);
$results = $api->send($text, $phones, true);
Telefonnummern werden als Integer in einem Array übergeben, es ist also möglich eine SMS gleich an beliebig viele Empfänger zu senden. Dazu müssen die zusätzlichen Nummern einfach als weitere Elemente im Array $phones angegeben werden. Die Variable $text enthält die SMS Nachricht die versendet werden soll, hierbei sollte man beachten, dass SMS Nachrichten maximal 160 Zeichen lang sein dürfen.
In der Variable $result wird gespeichert, ob die SMS erfolgreich gesendet wurde, oder ob es zu einem Fehler gekommen ist. Im Erfolgsfall ist der Wert true, bei einem Fehler wird ein error_code zurückgegeben.
if ($results = $api->send($text, $phones, true)){
echo "SMS erfolgreich versendet!";
}
Fazit
Für Hobbyprojekte ist der Versand von SMS bei bestimmten Ereignissen eher weniger sinnvoll, einfach aus dem Grund, dass es Geld kostet. Für größere Projekte kann es aber durchaus sinnvoll sein, vor allem zur Verifizierung von Benutzerkonten.
Sehr interessanter Artikel! Mich würde jetzt noch interessieren ob man im Fehlerfall auch die Fehlerursache herausfinden kann.
Ja es wird ein spezieller
error_codezurückgegeben. Ich hab das im Artikel mittlerweile abgeändert, danke.Wenn der Service umsonst oder sehr kostengünstig wäre... O.K.
Ist er aber nicht ! Eine SMS kostet 10p = Pence. Das sind ungefähr 12-13 Eurocent. Und liegt damit genau in dem Preisbereich den du als nicht mehr zeitgemäß bezeichnest.
Also ich will hier nicht meckern. Das Finden solcher Dienste und deine Beschreibung wie man das einbindet sind eine tolle Sache.
Sicher ist das auch interessant für Leute die sowas brauchen.
ich habe mal eine benachrichtigung an verschiedene handys senden lassen!
dazu einfach mal den provider gateway suchen, für t-mobile ist es zb.
deinehandynummer@t-mobile-sms.de einfach eine maill senden, dann kommt eine sms die man bestätigen muss und nun kann man von wo auch immer per mail sms an das jeweilige handy senden! ich habe die gateways in eine datenbank gespeichert und lasse dann neue einträge, in diesem fall waren es bestimmte anfrage über ein formular senden!
gekürzte und veränderte version:
// sms_gateway $sms_gateway_query = query("select * from " . TABLE_SMS_GATEWAY . " where sms_gateway_status = '1' "); $sms_gateway = fetch_array($sms_gateway_query); $sms_betreff = 'Neue anfrage von' . $insert_user . '' . $sms_gateway_number = $sms_gateway['sms_number']; $sms_gateway = $sms_gateway['sms_gateway']; $sms_text = 'Inhalt' . $insert_user_post . '' . sms_mail('', $mail, $sms_betreff, $sms_text, Besitzer, Webpage);aber wie gesagt es ist einfach, der code oben ist für jeden anderen unütz und dient nur als beispiel, sicherlich kann man es auch eleganter lösen, zb. ohne datenbank abfrage wenn man nur an einem handy versenden möchte... dazu kann man auch den normalen phpmail versand nutzen!
grüsse
Interessanter Ansatz!