Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. PHP

So senden Sie Textnachrichten mit PHP

by
Difficulty:BeginnerLength:LongLanguages:

German (Deutsch) translation by Władysław Łucyszyn (you can also view the original English article)

Textnachrichten sind weltweit weit verbreitet - bis zu dem Punkt, an dem immer mehr Webanwendungen SMS integriert haben, um Benutzer über Ereignisse, Verkäufe oder Gutscheine direkt über ihre Mobilgeräte zu informieren.

In diesem Tutorial werden die Grundlagen des Versendens von Textnachrichten mit PHP behandelt.


Überblick

Das Senden einer SMS ist eigentlich ziemlich einfach.

Unten finden Sie ein vereinfachtes Diagramm,wie eine Nachricht von einer Webanwendung an ein drahtloses Gerät gesendet werden kann.

Wir werden das aufteilen - Stück für Stück:

  • Die Nachricht wird mithilfe einer Webanwendung erstellt, die auf einem HTTP-Server gespeichert und ausgeführt und dann als E-Mail-Nachricht über das Internet ("die Cloud") gesendet wird.
  • Die E-Mail wird von einem Short Message Service Gateway (SMS Gateway) empfangen, das die Nachricht von einer E-Mail-Nachricht in eine SMS-Nachricht konvertiert.
  • Die SMS-Nachricht wird dann an ein SMSC (Short Message Service Center) übergeben, bei dem es sich um einen Server handelt, der Daten an bestimmte mobile Geräte weiterleitet.
  • Die Nachricht wird schließlich über das drahtlose Netzwerk an den Empfänger übertragen.

Die meisten drahtlosen Netzwerke verfügen über ein SMS-Gateway, über das E-Mail-Nachrichten als Textnachrichten an ein mobiles Gerät gesendet werden können. Das ist schön, weil es aus Entwicklersicht im Allgemeinen kostenlos ist - es ist jedoch natürlich kein kostenloser Dienst für den Endbenutzer. Für den Empfänger der Nachricht fallen weiterhin Gebühren an, und per E-Mail gesendete Nachrichten werden als Nicht-Netzwerk-Textnachricht in Rechnung gestellt.


E-Mail an SMS

Um eine SMS per E-Mail zu senden, benötigen Sie im Allgemeinen nur zwei Dinge:

  • Die Telefonnummer oder eindeutige Kennung des Mobilgeräts, das Sie erreichen möchten.
  • Und der Domainname des drahtlosen Netzwerks (viele finden Sie in dieser Liste der E-Mail-Adressen an SMS-Adressen).

Die folgende Konvention kann für die meisten Fluggesellschaften befolgt werden:

phoneNumber ist die Telefonnummer des Mobilgeräts, an das die Nachricht gesendet werden soll, und domainName.com ist die Adresse für das SMS-Gateway des Netzwerks.

Um einen Text an Mr. Example zu senden, können Sie einfach 3855550168@vtext.com zu einem beliebigen E-Mail-Client hinzufügen, eine Nachricht eingeben und auf Senden klicken. Dadurch wird eine Textnachricht an die Telefonnummer +1 (385) 555-0168 im Verizon Wireless Network gesendet.

Zum Beispiel sende ich mir mit Google Mail eine SMS.

Wenn mein Telefon die Nachricht empfängt, sollte es so aussehen:

Ziemlich cool!


mail-Funktion von PHP

Gehen wir noch einen Schritt weiter. Über das SMS-Gateway können wir mithilfe der mail-Funktion von PHP eine Textnachricht per E-Mail senden. Die mail-Funktion hat folgende Signatur:

Hier können Sie mehr darüber lesen.

  • $to, um den oder die Empfänger der Nachricht zu definieren. Gültige Beispiele sind:

    • user@example.com
    • user1@example.com, user2@example.com
    • User <user@example.com>
    • User1 <user1@example.com>, User2 <user2@example.com>
  • $subject ist eher selbsterklärend; Es sollte eine Zeichenfolge sein, die das gewünschte Thema enthält. Für SMS ist jedoch kein Betreff erforderlich.
  • $message ist die zu übermittelnde Nachricht. Wie im PHP-Handbuch erwähnt, "sollte jede Zeile mit einem LF (\n) getrennt werden. Zeilen sollten nicht größer als 70 Zeichen sein."

Um die frühere Funktionalität zu replizieren, könnten wir den folgenden PHP-Code schreiben:


Eine Probefahrt

Lassen Sie uns einen Test mit PHP durchführen, um sicherzustellen, dass alles korrekt eingerichtet ist und die E-mail-Funktion tatsächlich eine Textnachricht sendet. Mit dem folgenden Code können wir ausführen:

Wenn mein Telefon die Nachricht empfängt, sieht es so aus:

Wenn Sie eine Fehlermeldung erhalten, lesen Sie den Abschnitt zur Fehlerbehebung.

Wie Sie im obigen Bild sehen können, zeigt die Nachricht, dass es sich um Google Mail handelt. Dies liegt daran, dass ich alle meine ausgehenden Nachrichten von meinem lokalen Server über diesen Dienst weiterleite. Leider war es mir zum jetzigen Zeitpunkt nicht gelungen, den From-Header so zu ändern, dass er eine alternative Adresse widerspiegelt. Es scheint, dass die E-Mail-Header entfernt und durch vom SMS-Gateway vorbereitete Header ersetzt werden. Wenn jemand eine Problemumgehung kennt, hinterlassen Sie bitte einen Kommentar und lassen Sie den Rest von uns wissen!


Benutzerfreundlichkeit hinzufügen

Das Markup

Lassen Sie uns diese Idee aufgreifen und eine Benutzeroberfläche darum wickeln. Zuerst richten wir ein einfaches Formular ein:

Der Style

Als nächstes streuen wir etwas CSS ein:

Dies gibt uns die folgende einfache Form:


Das Drehbuch

Der wichtigste Teil dazu ist das PHP-Skript. Wir werden jetzt diesen Code schreiben:

  • Das Skript prüft zunächst, ob das Formular gesendet wurde.
  • Wenn ja, wird überprüft, ob die Variablen phoneNumber, carrier und smsMessage gesendet wurden. Dies ist nützlich, wenn die Seite möglicherweise mehr als ein Formular enthält.
  • Wenn phoneNumber, carrier und smsMessage verfügbar sind und phoneNumber und carrier nicht leer sind, können Sie versuchen, die Nachricht zu senden.
  • Das Nachrichtenargument in der mail-Funktion sollte pro Zeile 70 Zeichen lang sein. Mit der wordwrap funktion können wir die Nachricht in 70 Zeichenblöcke zerlegen.
  • phoneNumber und carrier werden verkettet und die Nachricht wird über die mail-Funktion gesendet.
  • Wenn Daten fehlen oder nicht validiert werden können, gibt das Skript einfach zurück. Es wurden nicht alle Informationen übermittelt.
  • Schließlich gibt mail einen Booleschen Wert zurück, der angibt, ob er erfolgreich war oder nicht. Der Wert wird in $result gespeichert, falls ich überprüfen musste, ob die Nachricht tatsächlich gesendet wurde.

Hinweis: Die mail-Methode benachrichtigt nur, ob die Nachricht gesendet wurde oder nicht. Es bietet keine Möglichkeit zu überprüfen, ob die Nachricht erfolgreich vom Empfängerserver oder Postfach empfangen wurde.


Der endgültige Code


Fehlerbehebung

Localhost-Fehler

Um die mail-Funktion nutzen zu können, muss ein Mail-Server ausgeführt werden. Wenn Sie dies auf einem Webhost ausführen, sind Sie wahrscheinlich in Ordnung. Wenn Sie sich nicht sicher sind, empfehle ich Ihnen, mit einem Administrator zu sprechen. Dies gilt auch für Personalmaschinen. Also wenn du Fehler bekommst wie..

...müssen Sie einen Mailserver installieren und konfigurieren. Dies liegt außerhalb des Bereichs dieses Tutorials. Wenn Sie jedoch an Ihrem lokalen Computer arbeiten, kann dieses Problem möglicherweise durch einen Wechsel zu XAMPP behoben werden. Versuchen Sie alternativ, Mercury Mail neben WAMP, MAMP oder auf einem LAMP-System (oder SAMP oder OAMP usw.) zu installieren (das sind viele 'AMPs').

PHPMailer

Eine andere Option (die Methode, die ich bevorzuge) ist die Verwendung von PHPMailer. Im Folgenden finden Sie ein Beispiel für die Verwendung von PHPMailer, um eine Verbindung zum SMTP-Server von Google Mail herzustellen und die Nachricht zu senden.

Die Verwendung ist so einfach wie das Einfügen einer Klasse in Ihr Skript.

Dies sollte etwas in der Art ausdrucken:

Je nach Ihrer Situation kann es etwas länger dauern, bis die Verbindung hergestellt ist. Wenn Sie Google Mail verwenden möchten, hat Google Informationen zum Herstellen einer Verbindung bereitgestellt.


Abschluss

Es gibt eine Vielzahl von Methoden, um eine SMS über eine Webanwendung zu senden. Diese Methode ist wirklich für Messaging mit geringem Volumen (höchstwahrscheinlich weniger als 1.000 Textnachrichten pro Monat) und Entwickler gedacht, die ihre Füße nass machen möchten, ohne Geld auszugeben. Weitere Optionen sind:

  • Verwenden eines SMS-Gateway-Anbieters

    • Wenn Sie eine Google search durchführen, werden zahlreiche Optionen zurückgegeben.
    • Die meisten SMS-Gateway-Anbieter enthalten eine API zum Senden von Nachrichten über eine Webanwendung.
    • Normalerweise können Sie sich zu einem angemessenen Preis für den Service anmelden, vorausgesetzt, Sie planen, mindestens 1.000 SMS-Nachrichten pro Monat zu senden.
    • Sie können eine Kurzwahlnummer mieten.
  • Verwendung eines GSM-Modems

    • Dies kann eine kostspielige und langsame Methode sein, da Sie ein Modem kaufen und einen Vertrag mit einem drahtlosen Netzwerk haben müssen
    • Sie müssen auch den Befehlssatz AT (Hayes) verwenden.
  • Verwenden Sie eine direkte Verbindung zu einem drahtlosen Netzwerk, was einige intensive Verhandlungen und eine Menge Geld erfordert.

Dieses Tutorial ist in keiner Weise eine umfassende Übersicht über das Senden von Tex-Nachrichten mit PHP. aber es sollte Ihnen den Einstieg erleichtern! Ich hoffe, dieses Tutorial hat Sie interessiert. Vielen Dank fürs Lesen!

Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.