So senden Sie Textnachrichten mit PHP

Das Versenden von Textnachrichten ist in der ganzen Welt äußerst verbreitet - bis zu dem Punkt, an dem immer mehr Webanwendungen SMS integriert haben, um Benutzer über Ereignisse, Verkäufe oder Coupons direkt über ihre mobilen Geräte zu informieren.

In diesem Lernprogramm werden die Grundlagen für das Senden von Textnachrichten mit PHP behandelt.

Premium Option

Bevor wir in den Schritt für Schritt einsteigen, sollten Sie sich eine fertige Lösung anschauen: SMS Sender, verfügbar auf dem Envato Market. Dieses PHP-Skript ermöglicht Ihnen:

  • Kontakte und Gruppen erstellen und importieren
  • Senden Sie eine einzelne SMS oder Massen-SMS an eine oder mehrere Gruppen
  • Verbinden Sie sich mit einem SMS-Gateway mit minimaler Konfiguration
  • Passen Sie Ihre SMS oder E-Mail an
  • Fügen Sie Ihrer SMS und E-Mail einen Link hinzu
  • und vieles mehr
SMS-Absender bei Envato Market

Wenn Sie es vorziehen, Ihren Absender für Textnachrichten von Grund auf neu zu erstellen, gehen Sie wie folgt vor.


Überblick

Das Versenden einer SMS (SMS) ist eigentlich ganz einfach.

Es folgt ein vereinfachtes Diagramm, wie eine Nachricht von einer Webanwendung an ein drahtloses Gerät gesendet werden kann.

Wir brechen das auf - Stück für Stück:

  • Die Nachricht wird mithilfe einer Webanwendung erstellt, die auf einem HTTP-Server gespeichert und ausgeführt wird und dann als Internet über das Internet ("die Cloud") gesendet wird Email Botschaft.
  • 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 Short Message Service Center (SMSC) übergeben, einen Server, der Daten an bestimmte mobile Geräte weiterleitet.
  • Die Nachricht wird schließlich über das drahtlose Netzwerk an den Empfänger übermittelt.

Die meisten drahtlosen Netzwerke verfügen über ein SMS-Gateway, über das E-Mail-Nachrichten als Textnachricht an ein mobiles Gerät gesendet werden können. Das ist schön, denn aus der Sicht eines Entwicklers ist es im Allgemeinen kostenlos - es ist jedoch natürlich kein kostenloser Service für den Endbenutzer. Die Gebühren gelten weiterhin für den Empfänger der Nachricht, und Nachrichten, die per E-Mail gesendet werden, werden als Textnachricht außerhalb des Netzwerks berechnet.


E-Mail an SMS

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

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

Die folgende Konvention kann für die meisten Beförderer befolgt werden:

[email protected]

Telefonnummer ist die Telefonnummer des mobilen Gerä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 jedem E-Mail-Client [email protected] hinzufügen, eine Nachricht eingeben und auf Senden klicken. Dadurch wird eine SMS an die Telefonnummer +1 (385) 555-0168 des Verizon Wireless Network gesendet.

Ich schicke mir zum Beispiel eine SMS mit Google Mail.

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

Ziemlich cool!


PHP's mail Funktion

Gehen wir noch einen Schritt weiter. Mit dem SMS-Gateway können wir per PHP eine SMS-Nachricht senden mail Funktion. Das mail Funktion hat folgende Signatur:

bool mail (Zeichenfolge $ to, Zeichenfolge $ subject, Zeichenfolge $ message [, Zeichenfolge $ additional_headers [, Zeichenfolge $ additional_parameters]])

Mehr darüber erfahren Sie hier.

  • $ bis Definiert den Empfänger oder die Empfänger der Nachricht. Gültige Beispiele sind:
  • $ subject ist eher selbsterklärend; es sollte eine Zeichenfolge sein, die den gewünschten Betreff enthält. SMS jedoch benötige nicht ein Thema.
  • $ message ist die zu übermittelnde Nachricht. Wie im PHP-Handbuch erwähnt, sollte "jede Zeile durch ein LF (\ n) getrennt werden. Zeilen sollten nicht länger als 70 Zeichen sein."

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

mail ('[email protected]', ", 'Testing');

Eine Probefahrt

Lassen Sie uns einen Test mit PHP durchführen, um sicherzustellen, dass alles korrekt eingerichtet ist und dass mail Funktion sendet in der Tat eine SMS. 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 von Google Mail stammt. Dies liegt daran, dass ich alle ausgehenden Nachrichten von meinem lokalen Server über diesen Dienst weiterleite. Zum jetzigen Zeitpunkt war ich leider nicht in der Lage, das zu ändern Von Header, um eine alternative Adresse anzuzeigen. 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

Der Markup

Lassen Sie uns mit den Grundlagen aus dem Weg gehen und diese Idee mit einer Benutzeroberfläche versehen. Zuerst erstellen wir ein einfaches Formular:

     

SMS mit PHP versenden

Der Style

Als Nächstes werden wir uns mit CSS beschäftigen:

body margin: 0; Polsterung: 3em 0; Farbe: #fff; Hintergrund: # 0080d2; Schriftfamilie: Georgia, Times New Roman, Serife;  #container width: 600px; Hintergrund: #fff; Farbe: # 555; Rahmen: 3px fest #ccc; -webkit-border-radius: 10px; -moz-border-radius: 10px; -ms-border-radius: 10px; Grenzradius: 10px; Border-Top: 3px fest #ddd; Polsterung: 1em 2em; Marge: 0 auto; -webkit-box-shadow: 3px 7px 5px # 000; -moz-box-shadow: 3px 7px 5px # 000; -ms-box-shadow: 3px 7px 5px # 000; Box-Schatten: 3px 7px 5px # 000;  ul list-style: none; Polsterung: 0;  ul> li padding: 0.12em 1em label display: block; Schwimmer: links; Breite: 130px;  input, textarea font-family: Georgia, Serif; 

Dies gibt uns die folgende einfache Form:


Das Skript

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

 
  • Das Skript prüft zunächst, ob das Formular übermittelt wurde.
  • Wenn ja, wird geprüft, ob die Telefonnummer, Träger und smsMessage Variablen wurden gesendet. Dies ist nützlich, wenn sich auf der Seite möglicherweise mehr als ein Formular befindet.
  • Ob Telefonnummer, Träger und smsMessage sind verfügbar und Telefonnummer und Träger nicht leer sind, ist es in Ordnung zu versuchen, die Nachricht zu senden.
  • Das Nachrichtenargument in der mail Die Funktion sollte pro Zeile 70 Zeichen lang sein. Wir können die Nachricht mit dem Zeichen in 70 Zeichenblöcke zerhacken Zeilenumbruch Funktion.
  • Telefonnummer und Träger werden verkettet und dann wird die Nachricht mit der gesendet mail Funktion.
  • Wenn Daten fehlen oder nicht validiert werden können, wird das Skript einfach zurückgegeben Nicht alle Informationen wurden übermittelt.
  • Endlich, mail gibt einen booleschen Wert zurück, der angibt, ob er erfolgreich war oder nicht. Der Wert wird in gespeichert $ Ergebnis Für den Fall, dass ich überprüfen musste, ob die Nachricht tatsächlich gesendet wurde.

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


Der endgültige Code

 
?>       

SMS mit PHP versenden


Fehlerbehebung

Localhost-Fehler

Um die mail Funktion müssen Sie einen Mail-Server ausführen. 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 persönliche Maschinen. Also wenn du Fehler bekommst?

Warnung: mail () [function.mail]: Verbindung zum Mailserver an "localhost" Port 25 konnte nicht hergestellt werden. Überprüfen Sie Ihre "SMTP" - und "smtp_port" -Einstellungen in php.ini oder verwenden Sie ini_set () in C: \ wamp \ www \. sms \ mail-test.php

? Sie müssen einen Mail-Server installieren und konfigurieren. Dies fällt nicht in den Umfang dieses Tutorials. Wenn Sie jedoch an Ihrem lokalen Computer arbeiten, kann dieses Problem möglicherweise durch das Wechseln zu XAMPP gelöst werden. Alternativ können Sie versuchen, Mercury Mail neben WAMP, MAMP oder auf einem LAMP-System (oder SAMP oder OAMP usw.) zu installieren (viele AMPs)..

PHPMailer

Eine andere Option (welche Methode ist mir lieber) 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.

erfordern 'class.phpmailer.php'; // Instanziieren der Klasse $ mail = new PHPMailer (); // SMTP $ mail-> IsSMTP () einrichten; // Richtet eine SMTP-Verbindung ein $ mail-> SMTPDebug = 2; // Dadurch werden Debug-Informationen gedruckt. $ Mail-> SMTPAuth = true; // Die Verbindung mit dem SMTP erfordert eine Autorisierung. $ Mail-> SMTPSecure = "tls"; // Verbindung über eine TLS-Verbindung herstellen $ mail-> Host = "smtp.gmail.com"; $ mail-> Port = 587; $ mail-> Encoding = '7bit'; // SMS verwendet 7-Bit-Codierung // Authentifizierung $ mail-> Username = "[email protected]"; // Login $ mail-> Password = "Passwort"; // Passwort // Verfassen Sie $ mail-> Subject = "Testing"; // Betreff (der nicht erforderlich ist) $ mail-> Body = "Testing"; // Hauptteil unserer Nachricht // Send To $ mail-> AddAddress ("##########@vtext.com"); // Wohin soll es gesendet werden var_dump ($ mail-> send ()); // Senden!

Dies sollte etwas ausdrücken wie:

Je nach Situation kann es etwas mehr dauern, die Verbindung aufzubauen. Wenn Sie Google Mail verwenden möchten, hat Google Informationen zum Herstellen der Verbindung bereitgestellt.


Fazit

Es gibt eine Vielzahl von Methoden, um das Senden einer SMS über eine Webanwendung auszuführen. Diese Methode ist vor allem für Nachrichten mit geringem Volumen (höchstwahrscheinlich weniger als 1.000 Textnachrichten pro Monat) und für Entwickler gedacht, die ihre Füße nass machen möchten, ohne Geld auszugeben. Andere Optionen umfassen:

  • Verwenden eines SMS-Gateway-Providers
    • Bei einer Google-Suche werden viele Optionen angezeigt.
    • Die meisten SMS-Gateway-Anbieter enthalten eine API zum Senden von Nachrichten über eine Webanwendung.
    • Sie können sich normalerweise zu einem angemessenen Preis für den Service anmelden, vorausgesetzt, Sie planen mindestens 1.000 SMS-Nachrichten pro Monat.
    • Sie können eine Kurzwahlnummer mieten.
  • Verwendung eines GSM-Modems
    • Dies kann eine kostenintensive und langsame Methode sein, da Sie ein Modem kaufen und einen Vertrag mit einem drahtlosen Netzwerk abgeschlossen haben müssen
    • Sie müssen auch den Befehlssatz AT (Hayes) verwenden.
  • Verwenden Sie eine direkte Verbindung zu einem drahtlosen Netzwerk. Dies erfordert einige strikte Verhandlungen und eine Menge Geld.

Dieses Tutorial ist in keiner Weise ein umfassender Überblick über das Senden von Textnachrichten mit PHP. aber es sollte dich anfangen! Ich hoffe, dieses Tutorial war für Sie interessant. Vielen Dank fürs Lesen!

Wenn Sie bei diesem oder einem anderen PHP-Problem noch Hilfe benötigen, wenden Sie sich an einen der erfahrenen PHP-Entwickler von Envato Studio.