Au cours des dernières années, j'ai rencontré diverses frustrations à la fois avec les applications de liste de courrier électronique open source et les fournisseurs payants basés sur le cloud. Dans ce tutoriel, je vais vous guider dans l'adoption de Mailgun.com, une solution économique que j'utilise avec succès depuis deux ans..
PHPList Open Source était toujours assez complexe et j'ai perdu tout intérêt quand ils ont commencé à refondre leur interface utilisateur dans des directions qui semblaient plus compliquées, pas moins. Au milieu de ma campagne de collecte de signatures à Seattle, Mailchimp a désactivé ma liste de courrier électronique, affirmant que je ne recevais pas correctement les autorisations des membres, même si chacun avait personnellement transmis à notre campagne son courrier électronique sur des formulaires. Ensuite, j'ai découvert Mailgun et décidé de créer ma propre solution, que j'utilise depuis.
Mailgun est un canon de messagerie SaaS basé sur le cloud, comme SendGrid. En fait, il est gratuit pour un maximum de 10 000 courriels par mois. Mailgun est incroyablement puissant et offre une API bien documentée dans une variété de langages populaires. Il fournit à la fois des capacités d'envoi et de réception, ces dernières pouvant être assez difficiles à développer à partir de zéro. Alors que Mailgun ne fournit pas de modèles pour les newsletters HTML riches, il fournit une plate-forme sur laquelle vous pouvez construire n'importe quoi..
J'utilise les services de liste de Mailgun pour communiquer avec des amis et contacter mes communautés sociales, ainsi que pour les activités commerciales et de marketing. Pour la plupart de mes besoins, les e-mails de diffusion HTML simples fonctionnent bien.
Dans ce tutoriel, je vais vous guider à travers ListApp, une applet qui s'appuie sur l'API Mailgun List. Dans un tutoriel de suivi, je vous guiderai dans la création de votre propre schéma de liste de courrier électronique sur PHP et MySQL natifs. Chaque approche a ses avantages.
Si vous souhaitez principalement diffuser et que vous souhaitez utiliser la propre interface Web de Mailgun pour gérer votre liste, ListApp est peut-être la meilleure option. Voici un exemple d'interface utilisateur Web de Mailgun pour la gestion des listes:
À l'aide de ListApp, la copie principale de votre liste est conservée dans le nuage chez Mailgun et synchronisée localement via l'API avec votre installation de ListApp..
Si vous souhaitez créer des listes de courrier électronique de groupe ou un contrôle plus fin de votre courrier électronique et de vos besoins, vous voudrez peut-être apprendre à créer des fonctionnalités de liste à partir de rien. Dans le prochain tutoriel, nous utiliserons toujours le moteur et l'API Mailgun, mais nous gérerons les listes dans l'application au lieu de l'API de liste de Mailgun. Cela évite également la complexité de la synchronisation.
ListApp fournit une interface Web simple pour les scénarios courants que vous pourriez utiliser avec les fonctionnalités de la liste de diffusion de Mailgun:
Vous pouvez installer ListApp sur n’importe quel système basé sur LAMP. J'ai posté mon guide générique d'installation d'un serveur Ubuntu LAMP à titre de référence. L'application comprend des instructions pour configurer ListApp sur un serveur Ubuntu avec 1 Go de RAM. Il nécessite PHP 5.x, MySQL 5.x et les bibliothèques PEAR et cURL.
ListApp est écrit dans le framework Yii pour PHP. Vous n'avez besoin de rien savoir du framework Yii pour exécuter l'application. Si vous préférez ne pas utiliser Yii, vous pouvez utiliser le composant Yiigun utilisé dans ListApp. Yiigun.php est essentiellement un fichier de classe PHP avec des méthodes et des aides pour tirer parti du SDK de la liste de diffusion de Mailgun.
Vous devrez créer un compte Mailgun gratuit (ou de niveau supérieur) pour obtenir vos clés d'API pour le fichier de paramètres. Si vous avez un compte payant, vous devez ajouter vos domaines et créer des paramètres DNS pour les utiliser. Si vous utilisez un compte gratuit, votre domaine sera yourchoice.mailgun.org. Par conséquent, vos adresses de liste peuvent être [email protected]. Les clés de votre API Mailgun seront affichées sur la page d'accueil du panneau de configuration..
L'utilisation de l'API Mailgun Mailing List est très simple. Mailgun fournit sa propre documentation sur l'API de liste de diffusion pour nous aider. Vous pouvez vérifier comment ListApp utilise l'API Mailgun dans notre composant Yiigun.php. ListApp utilise le kit de développement PHP PHP Mailgun pour interagir avec Mailgun.
Assurez-vous de suivre les instructions pour configurer vos clés d'API lors de l'installation. Chaque fois que la classe Yiigun est utilisée, le constructeur est appelé, créant une initialisation sécurisée avec l'API de Mailgun:
function __construct () // initialise la connexion mailgun $ this-> mg = new Mailgun (Yii :: app () -> params ['mailgun'] ['api_key']);
Vous pouvez créer de nouvelles listes de diffusion en utilisant les options de menu situées à droite de ListApp. Chaque liste nécessite un nom, une adresse électronique et une description. Lorsque vous créez une nouvelle liste, ListApp la télécharge également dans Mailgun. Vous pouvez également mettre à jour les propriétés pour n'importe quelle liste.
Voici comment nous créons une nouvelle liste:
fonction publique listCreate ($ newlist) $ result = $ this-> mg-> post ("lists", tableau ('adresse' => $ newlist-> adresse, 'name' => $ newlist-> nom, 'description '=> $ newlist-> description,' niveau_accès '=> $ newlist-> niveau_accès)); return $ result-> http_response_body;
Voici comment nous mettons à jour les propriétés d'une liste de diffusion:
Fonction publique listUpdate ($ adresse_existante, $ modèle) $ resultat = $ this-> mg-> put ("lists /".$ adresse_existante, array ('adresse' => $ modèle-> adresse, 'nom' => $ modèle-> nom, 'description' => $ modèle-> description, 'niveau_accès' => $ modèle-> niveau_accès)); return $ result-> http_response_body;
Vous pouvez importer de nouveaux membres dans n'importe quelle liste à partir de ListApp. Nous utilisons les bibliothèques d'analyse de liste de courrier électronique de PEAR pour cette fonctionnalité. Vous pouvez coller n'importe quelle liste d'adresses email dans le formulaire Nom personnel
, séparés par des virgules ou de nouvelles lignes. ListApp ajoutera les membres localement et les téléchargera sur Mailgun.com.
Pour ajouter des membres en bloc, nous créons d’abord une chaîne JSON des nouveaux membres à télécharger. Voici un exemple de code que vous pouvez utiliser..
$ json_upload = '[' foreach ($ adresses comme $ i) $ json_upload. = ''; $ json_upload. = '"name": "'. $ i-> name. '",'; $ json_upload. = '"address": "'. $ i-> address. '"'; $ json_upload. = ','; $ json_upload. = ']';
Ensuite, nous appelons la fonction d'envoi en masse avec cette chaîne JSON:
fonction publique memberBulkAdd ($ list = ", $ json_str =") $ result = $ this-> mg-> post ("lists /".$ list. '/ members.json', array ('members' => $ json_str, 'subsigned' => true, 'upsert' => 'yes')); return $ result-> http_response_body;
Vous pouvez également ajouter des membres individuels à des listes à l’aide des touches Ajouter un membre option de menu.
Vous pouvez envoyer un message à n’importe quelle liste à l’aide du menu situé à droite. Nous livrons le message sortant à Mailgun comme n'importe quel autre message. le $ à
adresse est en fait l'adresse de la liste de diffusion Mailgun, telle que [email protected]:
fonction publique send_simple_message ($ to = ", $ subject =", $ body = ", $ from =") if ($ from == ") $ from = Yii :: app () -> params ['supportEmail'] ; $ domain = Yii :: app () -> params ['mail_domain']; $ result = $ this-> mg-> sendMessage ($ domain, array ('from' => $ de, 'à' => $ to, 'subject' => $ subject, 'text' => $ body,)); return $ result-> http_response_body;
Mailgun gère ensuite l'envoi du message à des destinataires individuels.
Vous pouvez voir plus d'exemples de l'API Mailgun List en action ici.
Vous pouvez également utiliser certaines variables de destinataires génériques de Mailgun pour inclure des salutations personnelles, telles que Salut. % recipient_fname%
(voir la documentation Variables de modèle).
Vous pouvez également gérer vos listes via l'interface utilisateur Web Mailgun. Ensuite, lorsque vous ouvrez ListApp, cliquez sur le bouton Synchroniser option. Cela permettra de récupérer des copies de toutes les listes de diffusion existantes sur Mailgun et de télécharger tous leurs membres dans la base de données locale. Il synchronise essentiellement votre liste de diffusion à partir du site Mailgun.com. Cette option ne se synchronise pas.
Ici se trouve le fetchLists
une fonction. En utilisant Mailgun PHP SDK, cela est très simple:
fonction publique fetchLists () $ result = $ this-> mg-> get ("lists"); return $ result-> http_response_body;
Voici comment nous allons chercher les membres:
fonction publique fetchListMembers ($ address) $ result = $ this-> mg-> get ("lists /".$ address. '/ members'); return $ result-> http_response_body;
La version actuelle de ListApp parle à Mailgun en temps réel et ne gère pas beaucoup les erreurs. A plus long terme, il serait bon d'ajouter des requêtes d'API asynchrones en file d'attente.
En plus de la propre documentation de l'API Mailing List de Mailgun (qui inclut des exemples dans cURL, Ruby, PHP, Python, Java et C #), vous pouvez réviser, extraire et adapter le fichier Yiigun.php et ses fonctions pour votre propre application ou framework PHP.
Si vous n'utilisez pas Yii, vous devrez utiliser composer pour installer le SDK conformément aux instructions d'installation de Mailgun..
Vous disposez désormais d'une applet capable de créer et de gérer des listes dans le cloud via l'API Mailgun et de les utiliser pour tenir vos amis, collègues et clients informés et à jour. Dans la deuxième partie, je vous montrerai comment construire des listes de courrier électronique de manière native en PHP et MySQL. Nous utiliserons toujours le moteur et l'API Mailgun, mais nous gérerons les listes dans l'application au lieu de l'API de liste de Mailgun..
N'hésitez pas à poster vos questions et commentaires ci-dessous. Vous pouvez également me joindre sur Twitter @reifman ou m'envoyer un courriel directement. Suivez la page de mon instructeur Tuts + pour voir les prochains articles de cette série..