Come inviare messaggi di testo con PHP

La messaggistica di testo è diventata estremamente diffusa in tutto il mondo - al punto che un numero crescente di applicazioni Web ha integrato SMS per notificare agli utenti eventi, vendite o coupon direttamente attraverso i loro dispositivi mobili.

In questo tutorial, tratteremo i fondamenti dell'invio di messaggi di testo con PHP.

Opzione Premium

Prima di entrare nel processo passo-passo, potresti voler dare un'occhiata a una soluzione già pronta: SMS Sender, disponibile su Envato Market. Questo script PHP ti consente di:

  • creare e importare contatti e gruppi
  • inviare un singolo SMS o inviare SMS collettivi a un gruppo oa più gruppi
  • connettersi a qualsiasi gateway SMS con configurazione minima
  • personalizzare il tuo SMS o e-mail
  • aggiungi un link al tuo SMS ed email
  • e altro ancora
Mittente SMS sul mercato Envato

Se preferisci creare il tuo mittente di messaggi di testo da zero, ecco come farlo.


Panoramica

L'invio di un messaggio di testo (SMS) è in realtà piuttosto semplice.

Di seguito è riportato uno schema semplificato di come un messaggio può essere inviato da un'applicazione Web a un dispositivo wireless.

Lo spezzeremo - un pezzo alla volta:

  • Il messaggio viene composto utilizzando un'applicazione web che viene archiviata ed eseguita su un server HTTP e quindi inviata tramite Internet ("il cloud") come e-mail Messaggio.
  • L'e-mail è ricevuta da un Short Message Service Gateway (SMS Gateway), che converte il messaggio da un messaggio e-mail a un messaggio SMS.
  • Il messaggio SMS viene quindi consegnato a Short Message Service Center (SMSC), un server che indirizza i dati a specifici dispositivi mobili.
  • Il messaggio viene infine trasmesso tramite la rete wireless al destinatario.

La maggior parte delle reti wireless dispone di un gateway SMS tramite il quale i messaggi di posta elettronica possono essere inviati come messaggi di testo a un dispositivo mobile. Questo è bello, perché, dal punto di vista di uno sviluppatore, è generalmente gratuito, tuttavia, ovviamente non è un servizio gratuito per l'utente finale. Le tariffe si applicano ancora al destinatario del messaggio e i messaggi inviati via e-mail verranno fatturati come messaggi di testo non di rete.


Email per SMS

Per inviare un SMS via email, generalmente occorrono solo due cose:

  • Il numero di telefono o l'identificatore univoco del dispositivo mobile che desideri raggiungere.
  • E il nome di dominio della rete wireless (molti possono essere trovati in questo elenco di email agli indirizzi SMS)

La seguente convenzione può essere seguita per la maggior parte dei corrieri:

[email protected]

numero di telefono è il numero di telefono del dispositivo mobile a cui inviare il messaggio, e domainName.com è l'indirizzo per il gateway SMS della rete.

Per inviare un messaggio a Mr. Example, puoi semplicemente aggiungere [email protected] a qualsiasi client di posta elettronica, digitare un messaggio e premere invio. Ciò invierà un messaggio di testo al numero di telefono +1 (385) 555-0168 sulla rete wireless Verizon.

Ad esempio, invierò un messaggio di testo a me stesso utilizzando Gmail.

Quando il mio telefono riceve il messaggio, dovrebbe apparire così:

Abbastanza bello!


PHP di posta Funzione

Facciamo un passo in più. Usando il gateway SMS, possiamo inviare un messaggio di testo via e-mail usando PHP posta funzione. Il posta la funzione ha la seguente firma:

bool mail (stringa $ a, stringa $ oggetto, stringa $ messaggio [, stringa $ additional_headers [, stringa $ additional_parameters]]))

Puoi leggere di più qui.

  • $ a definisce il destinatario o i destinatari del messaggio. Esempi validi includono:
  • $ subject è piuttosto auto esplicativo; dovrebbe essere una stringa contenente il soggetto desiderato. Tuttavia, SMS non richiedono un soggetto.
  • $ messaggio è il messaggio da consegnare. Come menzionato nel manuale PHP, "ogni riga deve essere separata con un LF (\ n). Le linee non devono essere più grandi di 70 caratteri."

Per replicare la funzionalità precedente, potremmo scrivere il seguente codice PHP:

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

Un test drive

Facciamo un test con PHP per assicurarsi che tutto sia configurato correttamente e che il posta la funzione, infatti, invierà un messaggio di testo. Usando il seguente codice, possiamo eseguire:

Quando il mio telefono riceve il messaggio, sembra che sia così:

Se si verifica un errore, consultare la sezione sulla risoluzione dei problemi.

Come puoi vedere nell'immagine sopra, il messaggio mostra che proviene da Gmail. Questo perché instrado tutti i miei messaggi in uscita dal mio server locale attraverso quel servizio. Sfortunatamente, al momento della stesura di questo articolo, non sono riuscito a modificare il A partire dal intestazione per riflettere un indirizzo alternativo. Sembra che le intestazioni delle e-mail siano state rimosse e sostituite con intestazioni preparate dal gateway SMS. Se qualcuno sa di una soluzione alternativa, lascia un commento e lascia che il resto di noi lo sappia!


Aggiunta dell'usabilità

Il markup

Con le nozioni di base, prendiamo questa idea e avvolgiamo un'interfaccia utente attorno ad essa. Innanzitutto imposteremo un modulo semplice:

     

Invio di SMS con PHP

Lo stile

Quindi aggiungeremo alcuni CSS:

body margin: 0; imbottitura: 3em 0; colore: #fff; sfondo: # 0080d2; famiglia di font: Georgia, Times New Roman, serif;  #container width: 600px; sfondo: #fff; colore: # 555; border: 3px solid #ccc; -webkit-border-radius: 10px; -moz-border-radius: 10px; -ms-border-radius: 10px; border-radius: 10px; border-top: 3px solid #ddd; imbottitura: 1em 2em; margine: 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: none; padding: 0;  ul> li padding: 0.12em 1em label display: block; fluttuare: a sinistra; larghezza: 130 px;  input, textarea font-family: Georgia, Serif; 

Questo ci dà la seguente forma semplice:


Il copione

La parte più importante di questo è lo script PHP. Scriveremo quel bit di codice ora:

 
  • Lo script prima controlla se il modulo è stato inviato.
  • Se sì, controlla se il file numero di telefono, vettore e smsmessage le variabili sono state inviate. Questo è utile nel caso in cui ci possa essere più di un modulo sulla pagina.
  • Se numero di telefono, vettore e smsmessage sono disponibili e numero di telefono e vettore non sono vuoti, va bene tentare di inviare il messaggio.
  • L'argomento del messaggio in posta la funzione deve essere lunga 70 caratteri per riga. Possiamo tagliare il messaggio in blocchi di 70 caratteri usando il wordwrap funzione.
  • numero di telefono e vettore sono concatenati e quindi il messaggio viene inviato utilizzando il posta funzione.
  • Se i dati mancano o non possono essere convalidati, lo script restituisce semplicemente Non tutte le informazioni sono state inviate.
  • Finalmente, posta restituisce un valore booleano che indica se ha avuto successo o meno. Il valore è memorizzato in $ result nel caso avessi bisogno di verificare che il messaggio sia stato effettivamente inviato.

Nota: Il posta metodo solo notifica se il messaggio è stato inviato o meno. Non fornisce un modo per verificare se il messaggio è stato ricevuto correttamente dal server o dalla cassetta postale del destinatario.


Il codice finale

 
?>       

Invio di SMS con PHP


Risoluzione dei problemi

Errore localhost

Per usare il posta funzione, è necessario che sia in esecuzione un server di posta. Se lo stai facendo su un host web, probabilmente stai bene. Ma se non sei sicuro, ti consiglio di parlare con un amministratore. Questo vale anche per le macchine personali. Quindi se ottieni errori come?

Avviso: mail () [funzione.mail]: Impossibile connettersi al server di posta alla porta "localhost" 25, verificare le impostazioni "SMTP" e "smtp_port" in php.ini o utilizzare ini_set () in C: \ wamp \ www \ sms \ mail-test.php

? dovrai installare e configurare un server di posta. Questo è fuori dallo scopo di questo tutorial. Tuttavia, se stai lavorando sul tuo computer locale, passare a qualcosa come XAMPP potrebbe risolvere questo problema. In alternativa, prova ad installare Mercury Mail accanto a WAMP, MAMP o su un sistema LAMP (o SAMP o OAMP, ecc.) (Sono molti "AMP").

PHPMailer

Un'altra opzione (che è il metodo che preferisco) è usare PHPMailer. Di seguito è riportato un esempio di come utilizzare PHPMailer per connettersi al server SMTP di Gmail e inviare il messaggio.

Usarlo è semplice come includere una classe nel tuo script.

richiede 'class.phpmailer.php'; // Instantiate Class $ mail = new PHPMailer (); // Configura SMTP $ mail-> IsSMTP (); // Imposta una connessione SMTP $ mail-> SMTPDebug = 2; // Questo stamperà le informazioni di debug $ mail-> SMTPAuth = true; // La connessione con SMTP richiede l'autorizzazione $ mail-> SMTPSecure = "tls"; // Connetti usando una connessione TLS $ mail-> Host = "smtp.gmail.com"; $ mail-> Port = 587; $ mail-> Encoding = '7bit'; // SMS utilizza la codifica a 7 bit // Autenticazione $ mail-> Username = "[email protected]"; // Login $ mail-> Password = "password"; // Password // Componi $ mail-> Subject = "Testing"; // Oggetto (che non è richiesto) $ mail-> Corpo = "Test"; // Corpo del nostro messaggio // Invia a $ mail-> Aggiungi indirizzo ("##########@vtext.com"); // Dove spedirlo var_dump ($ mail-> send ()); // Inviare!

Questo dovrebbe stampare qualcosa sulla falsariga di:

Potrebbe essere necessario un po 'di più per configurare la connessione a seconda della situazione. Se hai intenzione di utilizzare Gmail, Google ha fornito informazioni sulla connessione.


Conclusione

Ci sono una miriade di metodi per svolgere il compito di inviare un SMS attraverso un'applicazione web. Questo metodo è davvero pensato per i messaggi a basso volume (molto probabilmente meno di 1.000 messaggi di testo al mese) e gli sviluppatori che cercano di bagnarsi i piedi senza incassare denaro. Altre opzioni includono:

  • Utilizzando un provider di gateway SMS
    • Fare una ricerca su Google restituirà molte opzioni.
    • La maggior parte dei provider di gateway SMS include un'API per l'invio di messaggi tramite un'applicazione web.
    • Di solito è possibile iscriversi al servizio a un prezzo ragionevole, assumendo che si stia pianificando l'invio di almeno 1.000 messaggi SMS al mese.
    • È possibile noleggiare un numero di codice breve.
  • Utilizzando un modem GSM
    • Questo può essere un modo costoso e lento per farlo, dal momento che devi comprare un modem e avere un contratto con una rete wireless
    • Dovrai anche usare il set di comandi AT (Hayes).
  • Utilizzare una connessione diretta a una rete wireless, che richiederà una forte negoziazione e un sacco di soldi.

Questo tutorial non è in alcun modo una recensione completa di invio di messaggi tex con PHP; ma dovrebbe iniziare! Spero che questo tutorial ti sia interessato. Grazie mille per la lettura!

Se hai ancora bisogno di aiuto con questo o altri problemi di PHP, prova a contattare uno degli sviluppatori PHP esperti su Envato Studio.