Cum se trimite mesaje text cu PHP

Mesajele text au devenit extrem de răspândite în întreaga lume - până în momentul în care un număr tot mai mare de aplicații web au integrat SMS-uri pentru a informa utilizatorii despre evenimente, vânzări sau cupoane direct prin intermediul dispozitivelor mobile.

În acest tutorial, vom prezenta fundamentele trimiterii de mesaje text cu PHP.

Opțiunea Premium

Înainte de a intra în procesul pas cu pas, vă recomandăm să vă uitați la o soluție pregătită: SMS Sender, disponibil pe Envato Market. Acest script PHP vă permite:

  • creați și importați contacte și grupuri
  • trimite un singur SMS sau trimite SMS-uri în bloc către un grup sau mai multe grupuri
  • conectați la orice gateway SMS cu configurație minimă
  • personalizați SMS-ul sau e-mailul
  • adăugați un link către SMS și e-mail
  • și mult mai mult
SMS Sender pe Envato Market

Dacă preferați să construiți expeditorul mesajelor text de la zero, iată cum să faceți acest lucru.


Prezentare generală

Trimiterea unui mesaj SMS este de fapt destul de ușoară.

Mai jos este o diagramă simplificată a modului în care un mesaj poate fi trimis dintr-o aplicație web către un dispozitiv fără fir.

Vom rupe acest lucru - o singură bucată odată:

  • Mesajul este compus folosind o aplicație web care este stocată și executată pe un server HTTP și apoi trimisă prin internet ("cloud") ca e-mail mesaj.
  • E-mailul este primit de un Gateway Service Message (SMS Gateway), care convertește mesajul dintr-un mesaj de e-mail într-un mesaj SMS.
  • Mesajul SMS este apoi transmis unui centru de servicii de mesaje scurte (SMSC), care este un server care traversează date către anumite dispozitive mobile.
  • Mesajul este transmis în final prin intermediul rețelei fără fir destinatarului.

Majoritatea rețelelor fără fir au un gateway SMS prin care mesajele de e-mail pot fi trimise ca mesaje text pe un dispozitiv mobil. Acest lucru este frumos, deoarece, din punctul de vedere al dezvoltatorului, este în general gratuit - totuși, acesta nu este, desigur, un serviciu gratuit pentru utilizatorul final. Taxele se aplică în continuare destinatarului mesajului, iar mesajele trimise prin e-mail vor fi facturate ca mesaje text non-de rețea.


E-mail la SMS

Pentru a trimite un SMS prin e-mail, în general, veți avea nevoie de două lucruri:

  • Numărul de telefon sau identificatorul unic al dispozitivului mobil pe care doriți să îl atingeți.
  • Și numele de domeniu al rețelei fără fir (multe pot fi găsite în această listă de e-mail la adrese SMS)

Următoarea convenție poate fi respectată pentru majoritatea transportatorilor:

[email protected]

numar de telefon este numărul de telefon al dispozitivului mobil pentru a trimite mesajul și domainName.com este adresa pentru gateway-ul SMS al rețelei.

Pentru a trimite un text dlui Mr. Example, puteți să adăugați [email protected] la orice client de e-mail, să tastați un mesaj și să îl trimiteți. Acesta va trimite un mesaj text la numărul de telefon +1 (385) 555-0168 pe rețeaua Verizon Wireless.

De exemplu, vă voi trimite un mesaj de tip text utilizând Gmail.

Când telefonul meu primește mesajul, ar trebui să arate astfel:

Destul de tare!


lui PHP Poștă Funcţie

Să facem lucrurile un pas mai departe. Utilizând Gateway-ul SMS, putem trimite un mesaj text prin e-mail folosind PHP Poștă funcţie. Poștă funcția are următoarea semnătură:

bool mail (șir $ la, string $ subiect, șir $ mesaj [, string $ additional_headers [, string $ additional_parameters]])

Puteți citi mai multe despre el aici.

  • $ la definește receptorul sau receptoarele mesajului. Exemplele valide includ:
  • $ subiect este destul de explicativă; ar trebui să fie un șir care conține subiectul dorit. Cu toate acestea, SMS nu necesită un subiect.
  • $ mesaj este mesajul care trebuie trimis. După cum se menționează în manualul PHP, "fiecare linie trebuie separată cu un LF (\ n) .Liniile nu trebuie să fie mai mari de 70 de caractere."

Pentru a replica funcționalitatea anterioară, am putea scrie următorul cod PHP:

mail ('[email protected]', ',' Testare ');

Un test de disc

Să facem un test cu PHP pentru a vă asigura că totul este configurat corect și că Poștă funcția va trimite, de fapt, un mesaj text. Folosind următorul cod, putem rula:

Când telefonul meu primește mesajul, se pare că:

Dacă întâmpinați o eroare, consultați secțiunea de depanare.

După cum puteți vedea în imaginea de mai sus, mesajul arată că este din Gmail. Acest lucru se datorează faptului că rută toate mesajele mele de ieșire de la serverul meu local prin serviciul respectiv. Din păcate, de la această scriere, nu am reușit să modificăm Din antetul pentru a reflecta o adresă alternativă. Se pare că antetele de e-mail sunt dezbrăcate și înlocuite cu anteturi pregătite de gateway-ul SMS. Dacă cineva știe de o soluție, vă rugăm să lăsați un comentariu și să ne cunoaștem restul!


Adăugarea de utilizare

Marcajul

Având în vedere elementele de bază, să luăm această idee și să înfășurăm o interfață de utilizator în jurul acesteia. Mai întâi vom configura un simplu formular:

     

Trimiterea SMS-urilor cu PHP

Stilul

Apoi vom stropi în unele CSS:

corp marja: 0; umplutura: 3m 0; culoare: #fff; fundal: # 0080d2; font-familie: Georgia, Times New Roman, serif;  #container width: 600px; fundal: #fff; culoare: # 555; frontieră: 3px solid #ccc; -webkit-border-radius: 10px; -moz-border-radius: 10px; -ms-border-radius: 10px; raza de graniță: 10 pixeli; frontieră-top: 3px solid #ddd; umplutura: 1em 2m; marja: 0 auto; -webkit-box-shadow: 3px 7px 5px # 000; -moz-box-shadow: 3px 7px 5px # 000; -ms-box-shadow: 3px 7px 5px # 000; box-shadow: 3px 7px 5px # 000;  ul list-style: nici unul; umplutura: 0;  ul> li padding: 0.12em 1em etichetă display: block; plutește la stânga; lățime: 130px;  intrare, textarea font-family: Georgia, Serif; 

Acest lucru ne oferă următoarea formă simplă:


Scriptul

Partea cea mai importantă a acestui lucru este scriptul PHP. Vom scrie acel cod de cod acum:

 
  • Scriptul verifică mai întâi pentru a vedea dacă formularul a fost trimis.
  • Dacă da, verifică dacă este cazul numar de telefon, purtător și smsMessage au fost trimise variabile. Acest lucru este util în cazul în care pot exista mai multe forme pe pagină.
  • Dacă numar de telefon, purtător și smsMessage sunt disponibile și numar de telefon și purtător nu sunt goale, este bine să încercați să trimiteți mesajul.
  • Argumentul mesajului în Poștă funcția trebuie să aibă o lungime de 70 de caractere pe linie. Putem tăia mesajul în bucăți de 70 de caractere folosind wordwrap funcţie.
  • numar de telefon și purtător sunt concatenate și apoi mesajul este trimis folosind Poștă funcţie.
  • Dacă datele lipsesc sau nu pot fi validate, scriptul revine pur și simplu Nu au fost transmise toate informațiile.
  • In cele din urma, Poștă returnează un boolean care indică dacă a avut succes sau nu. Valoarea este stocată în $ rezultat în cazul în care aveam nevoie să verific că mesajul a fost trimis.

Notă: Poștă metoda doar notifică dacă mesajul a fost trimis sau nu. Nu oferă o modalitate de a verifica dacă mesajul a fost primit cu succes de serverul destinatar sau de cutia poștală.


Codul Final

 
?>       

Trimiterea SMS-urilor cu PHP


Depanare

Eroare localhost

Pentru a utiliza Poștă trebuie să aveți un server de poștă electronică care rulează. Dacă rulați acest lucru pe o gazdă web, probabil că sunteți bine. Dar dacă nu sunteți sigur, vă recomand să discutați cu un administrator. Acest lucru este valabil și pentru mașinile personale. Deci, dacă primiți erori cum ar fi?

Atenție: mail () [function.mail]: Nu a reușit să se conecteze la mailserver la portul "localhost" 25, verifică setarea "SMTP" și "smtp_port" în php.ini sau folosiți ini_set () în C: \ wamp \ sms \ e-mail-test.php

? va trebui să instalați și să configurați un server de poștă electronică. Acest lucru nu face parte din acest tutorial. Cu toate acestea, dacă lucrați la mașina dvs. locală, comutarea la ceva asemănător cu XAMPP ar putea rezolva această problemă. Alternativ, încercați să instalați Mercury Mail pe lângă WAMP, MAMP sau pe un sistem LAMP (sau SAMP sau OAMP, etc.) (care este o mulțime de "AMP-uri").

PHPMailer

O altă opțiune (care este metoda pe care o prefer) este utilizarea PHPMailer. Mai jos este un exemplu de utilizare a programului PHPMailer pentru a vă conecta la serverul SMTP Gmail și pentru a trimite mesajul.

Folosirea lui este la fel de simplă ca includerea unei clase în scenariul tău.

solicitați 'class.phpmailer.php'; // Instanțiate Class $ mail = nou PHPMailer (); // Configurați SMTP $ mail-> IsSMTP (); // Setează o conexiune SMTP $ mail-> SMTPDebug = 2; // Aceasta va tipări informațiile de depanare $ mail-> SMTPAuth = true; // Conexiunea cu SMTP nu necesită autorizare $ mail-> SMTPSecure = "tls"; // Conectați-vă utilizând o conexiune TLS $ mail-> Host = "smtp.gmail.com"; $ mail-> Port = 587; $ mail-> Encoding = '7bit'; // SMS utilizează codificarea pe 7 biți // Autentificare $ mail-> Username = "[email protected]"; // Login $ mail-> Password = "password"; // Parola // Compune $ mail-> Subject = "Testing"; // Subiect (care nu este necesar) $ mail-> Body = "Testing"; // Corpul mesajului nostru // Trimiteți la $ mail-> AddAddress ("##########@vtext.com"); // unde trimiteți var_dump ($ mail-> send ()); // Trimiteți!

Acest lucru ar trebui să imprime ceva în conformitate cu:

Este posibil să dureze ceva mai mult pentru a configura conexiunea, în funcție de situația dvs. Dacă intenționați să utilizați Gmail, Google a furnizat informații despre conectare.


Concluzie

Există o multitudine de metode pentru a îndeplini sarcina de a trimite un SMS printr-o aplicație web. Această metodă este destinată în special mesageriei cu volum redus (cel mai probabil, mai puțin de 1.000 de mesaje text pe lună) și dezvoltatorilor care doresc să-și facă picioarele umede, fără a forța banii în numerar. Alte opțiuni includ:

  • Utilizarea unui furnizor de gateway-uri SMS
    • Efectuarea unei căutări Google va aduce o mulțime de opțiuni.
    • Majoritatea furnizorilor de gateway-uri SMS includ un API pentru trimiterea mesajelor printr-o aplicație web.
    • De obicei, vă puteți înscrie la un serviciu la un preț rezonabil, presupunând că intenționați să trimiteți cel puțin 1000 de mesaje SMS pe lună.
    • Puteți să închiriați un număr de cod scurt.
  • Folosind un modem GSM
    • Aceasta poate fi o metodă costisitoare și lentă de a face acest lucru, deoarece trebuie să cumpărați un modem și să aveți un contract cu o rețea fără fir
    • Va trebui, de asemenea, să utilizați setul de comandă AT (Hayes).
  • Utilizați o conexiune directă la o rețea fără fir, ceea ce va necesita o negociere puternică și o mulțime de bani.

Acest tutorial nu este deloc o revizuire cuprinzătoare a trimiterii de mesaje text cu PHP; dar ar trebui să începi! Sper că acest tutorial a fost de interes pentru dvs. Vă mulțumesc foarte mult pentru lectură!

Dacă aveți nevoie de ajutor în legătură cu această problemă sau cu orice altă problemă PHP, încercați să contactați unul dintre dezvoltatorii experimentați PHP de pe Envato Studio.

Cod