Comment envoyer des messages texte avec PHP

La messagerie textuelle est devenue extrêmement répandue dans le monde entier - au point qu'un nombre croissant d'applications Web ont intégré les SMS pour informer les utilisateurs d'événements, de ventes ou de coupons directement via leurs appareils mobiles..

Dans ce tutoriel, nous aborderons les bases de l'envoi de SMS avec PHP.

Option Premium

Avant de passer à la procédure étape par étape, vous pouvez envisager une solution toute prête: SMS Sender, disponible sur Envato Market. Ce script PHP vous permet de:

  • créer et importer des contacts et des groupes
  • envoyer un seul SMS ou envoyer des SMS en masse à un groupe ou à plusieurs groupes
  • se connecter à n'importe quelle passerelle SMS avec une configuration minimale
  • personnaliser votre SMS ou email
  • ajouter un lien vers vos SMS et email
  • et beaucoup plus
Expéditeur de SMS sur le marché Envato

Si vous préférez créer votre expéditeur de message texte à partir de rien, voici comment procéder..


Vue d'ensemble

Envoi d'un message texte (SMS) est en fait assez facile.

Vous trouverez ci-dessous un schéma simplifié indiquant comment un message peut être envoyé depuis une application Web vers un périphérique sans fil.

Nous allons décomposer ceci - un morceau à la fois:

  • Le message est composé à l'aide d'une application Web stockée et exécutée sur un serveur HTTP, puis envoyée via Internet ("le nuage") en tant que email message.
  • Le courrier électronique est reçu par une passerelle de service de messages courts (passerelle SMS), qui convertit le message d’un message électronique en un message SMS..
  • Le message SMS est ensuite transmis à un SMSC (Short Message Service Center), un serveur qui achemine les données vers des périphériques mobiles spécifiques..
  • Le message est finalement transmis au destinataire via le réseau sans fil.

La plupart des réseaux sans fil ont une passerelle SMS via laquelle les messages électroniques peuvent être envoyés sous forme de messages texte à un appareil mobile. C'est agréable, car du point de vue du développeur, il est généralement gratuit. Cependant, il ne s'agit bien sûr pas d'un service gratuit pour l'utilisateur final. Des frais restent applicables au destinataire du message et les messages envoyés par courrier électronique seront facturés comme un message texte hors réseau..


Email à SMS

Pour envoyer un SMS par courrier électronique, vous n’avez généralement besoin que de deux choses:

  • Le numéro de téléphone ou l'identifiant unique de l'appareil mobile que vous souhaitez joindre.
  • Et le nom de domaine du réseau sans fil (vous en trouverez beaucoup dans cette liste d'adresses e-mail en adresses SMS)

La convention suivante peut être suivie pour la plupart des transporteurs:

[email protected]

numéro de téléphone est le numéro de téléphone du périphérique mobile auquel envoyer le message, et nomdomaine.com est l'adresse de la passerelle SMS du réseau.

Pour envoyer un texte à M. Exemple, vous pouvez simplement ajouter [email protected] à n’importe quel client de messagerie électronique, taper un message et appuyer sur Envoyer. Cela enverra un message texte au numéro de téléphone +1 (385) 555-0168 sur le réseau sans fil de Verizon..

Par exemple, je vais m'envoyer un message texte à l'aide de Gmail..

Lorsque mon téléphone reçoit le message, il devrait ressembler à ceci:

Assez impressionnant!


PHP courrier Une fonction

Allons un peu plus loin. En utilisant la passerelle SMS, nous pouvons envoyer un message texte par courrier électronique à l'aide de PHP courrier une fonction. le courrier fonction a la signature suivante:

bool mail (chaîne $ to, chaîne $ sujet, chaîne $ message [, chaîne $ additional_headers [, chaîne $ additional_parameters]])

Vous pouvez en lire plus ici.

  • $ à définit le ou les destinataires du message. Les exemples valides incluent:
  • $ sujet est plutôt explicite; il devrait s'agir d'une chaîne contenant le sujet souhaité. Cependant, SMS ne nécessitent pas un sujet.
  • $ message est le message à livrer. Comme indiqué dans le manuel PHP, "chaque ligne doit être séparée par un LF (\ n). Les lignes ne doivent pas dépasser 70 caractères".

Pour répliquer la fonctionnalité précédente, nous pourrions écrire le code PHP suivant:

mail ("[email protected]", "," Tests ");

Un essai routier

Faisons un test avec PHP pour s’assurer que tout est configuré correctement et que le courrier En fait, la fonction enverra un message texte. En utilisant le code suivant, nous pouvons exécuter:

Lorsque mon téléphone reçoit le message, il ressemble à ceci:

Si vous obtenez une erreur, consultez la section Dépannage..

Comme vous pouvez le voir dans l'image ci-dessus, le message indique qu'il provient de Gmail. En effet, tous mes messages sortants de mon serveur local sont acheminés via ce service. Malheureusement, au moment de la rédaction de ce document, je n’ai pas réussi à modifier le De en-tête pour refléter une autre adresse. Il semble que les en-têtes de courrier électronique soient supprimés et remplacés par des en-têtes préparés par la passerelle SMS. Si quelqu'un connaît une solution de contournement, laissez s'il vous plaît un commentaire et laissez le reste d'entre nous savoir!


Ajout de l'utilisabilité

Le balisage

Une fois les notions de base terminées, prenons cette idée pour envelopper une interface utilisateur. Nous allons d'abord créer un formulaire simple:

     

Envoi de SMS avec PHP

Le style

Ensuite, nous allons saupoudrer du CSS:

corps marge: 0; rembourrage: 3em 0; couleur: #fff; arrière-plan: # 0080d2; famille de fontes: Georgia, Times New Roman, serif;  #container width: 600px; background: #fff; couleur: # 555; bordure: 3px solide #ccc; -webkit-border-radius: 10px; -moz-border-radius: 10px; -ms-border-radius: 10px; border-radius: 10px; border-top: 3px solid #ddd; rembourrage: 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-shadow: 3px 7px 5px # 000;  ul list-style: none; rembourrage: 0;  ul> li padding: 0.12em 1em label display: block; float: gauche; largeur: 130px;  input, textarea font-family: Georgia, Serif; 

Cela nous donne la forme simple suivante:


Le scénario

La partie la plus importante à cela est le script PHP. Nous allons écrire ce morceau de code maintenant:

 
  • Le script vérifie d'abord si le formulaire a été soumis..
  • Si oui, il vérifie si le numéro de téléphone, transporteur et smsMessage les variables ont été envoyées. Ceci est utile dans le cas où il pourrait y avoir plus d’un formulaire sur la page..
  • Si numéro de téléphone, transporteur et smsMessage sont disponibles et numéro de téléphone et transporteur ne sont pas vides, vous pouvez essayer d'envoyer le message..
  • L'argument du message dans le courrier La fonction doit comporter 70 caractères par ligne. Nous pouvons découper le message en morceaux de 70 caractères en utilisant le Wordwrap une fonction.
  • numéro de téléphone et transporteur sont concaténés puis le message est envoyé en utilisant le courrier une fonction.
  • Si des données sont manquantes ou ne peuvent pas être validées, le script renvoie simplement Toutes les informations n'ont pas été soumises.
  • finalement, courrier renvoie un booléen indiquant s'il a réussi ou non. La valeur est stockée dans $ résultat au cas où je devais vérifier que le message avait bien été envoyé.

Remarque: le courrier méthode n'indique que si le message a été envoyé ou non. Il ne permet pas de vérifier si le message a bien été reçu par le serveur ou la boîte aux lettres destinataire..


Le code final

 
?>       

Envoi de SMS avec PHP


Dépannage

Erreur Localhost

Pour utiliser le courrier fonction, vous devez avoir un serveur de messagerie en cours d'exécution. Si vous utilisez ceci sur un hôte Web, vous allez probablement bien. Mais si vous n'êtes pas sûr, je vous recommande de parler à un administrateur. Cela est également vrai pour les machines personnelles. Donc, si vous obtenez des erreurs comme?

Avertissement: mail () [function.mail]: Échec de la connexion au serveur de courrier électronique sur le port 25 "localhost", vérifiez les paramètres "SMTP" et "smtp_port" dans php.ini ou utilisez ini_set () dans C: \ wamp \ www \ sms \ mail-test.php

? vous devrez installer et configurer un serveur de messagerie. Cela sort du cadre de ce tutoriel. Toutefois, si vous travaillez sur votre ordinateur local, le passage à quelque chose comme XAMPP peut résoudre ce problème. Vous pouvez également essayer d’installer Mercury Mail à côté de WAMP, MAMP ou sur un système LAMP (ou SAMP ou OAMP, etc.) (c’est beaucoup de «AMP»)..

PHPMailer

Une autre option (qui est la méthode que je préfère) consiste à utiliser PHPMailer. Vous trouverez ci-dessous un exemple d'utilisation de PHPMailer pour vous connecter au serveur SMTP de Gmail et envoyer le message..

Son utilisation est aussi simple que d'inclure une classe dans votre script.

require 'class.phpmailer.php'; // Instancie la classe $ mail = new PHPMailer (); // Configurer SMTP $ mail-> IsSMTP (); // établit une connexion SMTP $ mail-> SMTPDebug = 2; // Ceci affichera les informations de débogage $ mail-> SMTPAuth = true; // La connexion au SMTP nécessite une autorisation $ mail-> SMTPSecure = "tls"; // Connectez-vous en utilisant une connexion TLS $ mail-> Host = "smtp.gmail.com"; $ mail-> Port = 587; $ mail-> Encoding = '7bit'; // SMS utilise un codage 7 bits // Authentification $ mail-> Nom d'utilisateur = "[email protected]"; // Login $ mail-> Password = "password"; // Mot de passe // Compose $ mail-> Subject = "Testing"; // Sujet (non requis) $ mail-> Body = "Testing"; // Corps de notre message // Envoyer à $ mail-> AddAddress ("##########@vtext.com"); // Où l'envoyer var_dump ($ mail-> send ()); // Envoyer!

Cela devrait imprimer quelque chose comme:

Cela peut prendre un peu plus de temps pour configurer la connexion, selon votre situation. Si vous envisagez d’utiliser Gmail, Google vous a fourni des informations pour vous connecter..


Conclusion

Il existe une myriade de méthodes pour envoyer des SMS via une application Web. Cette méthode est vraiment destinée aux messages à faible volume (probablement moins de 1 000 messages texte par mois) et aux développeurs qui cherchent à se mettre à l'aise sans avoir à débourser de l'argent. Les autres options incluent:

  • Utilisation d'un fournisseur de passerelle SMS
    • Faire une recherche sur Google retournera beaucoup d'options.
    • La plupart des fournisseurs de passerelles SMS incluent une API permettant d'envoyer des messages via une application Web..
    • Vous pouvez généralement vous inscrire au service à un prix raisonnable, en supposant que vous envisagez d'envoyer au moins 1 000 SMS par mois..
    • Vous pouvez louer un numéro de code court.
  • Utiliser un modem GSM
    • Cela peut être une façon coûteuse et lente de le faire, car vous devez acheter un modem et avoir un contrat avec un réseau sans fil.
    • Vous devrez également utiliser le jeu de commandes AT (Hayes).
  • Utilisez une connexion directe à un réseau sans fil, ce qui nécessitera de fortes négociations et beaucoup d’argent.

Ce tutoriel n’est en aucun cas un examen complet de l’envoi de messages tex avec PHP; mais cela devrait vous aider à démarrer! J'espère que ce tutoriel vous a intéressé. Merci beaucoup pour la lecture!

Si vous avez toujours besoin d'aide pour résoudre ce problème ou tout autre problème PHP, essayez de contacter l'un des développeurs PHP expérimentés sur Envato Studio..