Maison > développement back-end > tutoriel php > Débogage par e-mail avec MailCatcher

Débogage par e-mail avec MailCatcher

Jennifer Aniston
Libérer: 2025-02-21 11:15:09
original
454 Les gens l'ont consulté

Débogage par e-mail avec MailCatcher

Vous utilisez un e-mail dans vos applications, non? Ok, c'est une question rhétorique. Bien sûr que vous le faites. Bien que les e-mails aient plus de 30 ans, c'est toujours l'application la plus populaire sur la planète, de loin. Voici quelques statistiques de Pingdom, pour 2012:

  • 2,2 milliards - nombre d'utilisateurs de messagerie dans le monde
  • 144 milliards - Trafic total par e-mail par jour dans le monde
  • 4,3 milliards - Nombre de clients de messagerie dans le monde en 2012

stupéfiant!

Les plats clés

  • MailCatcher est un outil utile pour les développeurs qui vous permet de tester les fonctionnalités des e-mails dans vos applications sans envoyer de courriels à des adresses réelles. Il exécute un serveur SMTP simple qui attrape n'importe quel message qui lui est envoyé et l'affiche dans une interface Web.
  • L'interface utilisateur Web MailCatcher est simple et efficace, répertoriant les e-mails dans la file d'attente et fournissant des informations détaillées à leur sujet. C'est un excellent moyen de vérifier que votre code fonctionne comme il se doit et que le courrier envoyant un workflow fonctionne correctement.
  • La configuration de MailCatcher implique l'installation de votre machine virtuelle ou de votre machine Linux et de la configuration de votre application pour envoyer des e-mails au serveur MailCatcher. L'article fournit des instructions détaillées et un exemple de code pour ce processus.
  • Il est important de noter que MailCatcher n'est pas conçu pour être utilisé dans un environnement de production. Il s'agit d'un outil de développement destiné à être utilisé dans un environnement de développement local. L'utiliser dans un environnement de production peut entraîner des e-mails perdus et d'autres problèmes.

Mais pourquoi un autre article sur le courrier électronique?

pour une raison simple, dont nous avons probablement tous été capturés à un moment ou à un autre. Parce que nous devons tester, aussi près de la production que possible, mais sans envoyer de courrier électronique à nos clients accidentellement, et eux devenant par conséquent confus ou frustrés, ni embarrassés que leurs clients aient reçu des e-mails de test.

Je suis sûr que vous savez ce que je veux dire. Vous pensez que vous avez défini votre application dans une sorte de mode de débogage. Compte tenu de cela, vous commencez votre test, qui envoie un tas de e-mails de votre application. Pendant tout ce temps, vous vous sentez à l'aise dans la connaissance que personne, mais vous ne les verrez jamais.

Vos tests passent, vous vous félicitez et passez à autre chose. Peu de temps après, vous recevez un plutôt, disons simplement terse , Skype Call de votre client. Elle est plutôt agacée car ses clients sonnent, demandant pourquoi ils ont reçu des courriels étranges de son entreprise. Elle n'est pas heureuse et veut des réponses?

Vous êtes là? Vous ne voulez pas être là? Je suppose que non. Voici la solution - MailCatcher. Si vous ne le connaissez pas, MailCatcher

… exécute un serveur SMTP super simple qui attrape tout message envoyé pour afficher dans une interface Web. Exécutez MailCatcher, définissez votre application préférée pour livrer sur SMTP: //127.0.0.1: 1025 au lieu de votre serveur SMTP par défaut, puis consultez http://127.0.0.1:1080 pour voir le courrier qui est arrivé jusqu'à présent.

Cela ressemble à une bonne solution? Peu importe si vous êtes fatigué, sous pression, nouveau dans l'équipe, ou si vous avez simplement besoin d'exécuter des tests - MailCatcher s'assurera qu'aucun e-mail ne sera envoyé en dehors de votre réseau, ou même en dehors de votre machine virtuelle de développement.

Dans cet article, je vais vous montrer comment le configurer et exécuter l'interface lorsque les e-mails ont été capturés par lui.

Une machine virtuelle pré-préparée

Pour vous éviter beaucoup de problèmes de configuration de MailCatcher, j'ai créé une boîte vagabond personnalisée qui fait tout pour vous. Assurez-vous que VirtualBox et Vagrant installent, puis clonez une copie du référentiel de l'article à l'aide de la commande suivante:

<span>git clone git@github.com:sitepoint-examples/mailcatcher-article.git</span>
Copier après la connexion
Copier après la connexion

Ensuite, dans le répertoire du projet cloné, exécutez la commande suivante:

vagrant up
Copier après la connexion
Copier après la connexion

Cela lancera le processus d'approvisionnement de la machine virtuelle, affichant beaucoup de sortie au fil du processus d'approvisionnement. La machine virtuelle configurée est assez minimaliste. Il a MailCatcher , sendmail et nginx installé.

Nginx a une configuration VHOST simple, qui mappe le répertoire de projet à / var / www / sur la machine virtuelle. Si vous souhaitez savoir exactement ce qui se passe lors de l'approvisionnement, la disposition de paiement.sh.

Installation manuelle de MailCatcher

Si vous souhaitez installer vous-même MailCatcher et que vous avez une machine virtuelle (ou une machine Linux disponible), voici les étapes à exécuter:

<span>sudo apt-get install -y vim curl python-software-properties lynx nginx
</span><span>sudo apt-get install -y php5-fpm php5-memcache memcached php-apc
</span><span>sudo apt-get install -y build-essential libsqlite3-dev ruby1.9.3
</span><span>sudo gem install mailcatcher
</span><span>sudo mailcatcher --http-ip 0.0.0.0</span>
Copier après la connexion
Copier après la connexion

Vous pouvez ou non avoir à exécuter la troisième commande. J'ai fait ce que j'utilise une image Vagrant Ubuntu précis 64 très minimaliste, qui a besoin des packages pour construire un cache-creux. Veuillez noter que si vous êtes sur une distribution ou une version Linux différente, les noms de packages individuels peuvent être différents.

Remarque: Si vous suivez le processus de démarrage standard de MailCatcher, il n'écoutera que sur IP 127.0.0.1 et le port 1025. Avec cette configuration, nous ne pouvions pas le voir à partir de la machine hôte. J'ai donc ajouté une propriété intellectuelle publique sur la machine virtuelle, 192.168.56.111 et modifié la configuration de MailCatcher afin qu'elle écoute sur tous les IP.

L'UI Web MailCatcher

Maintenant, vous pourrez voir l'interface utilisateur Web MailCatcher sur http://192.168.56.111:1080. Il ressemblera à l'image ci-dessous:

Débogage par e-mail avec MailCatcher

Il s'agit d'une interface assez simple, répertoriant les e-mails dans la file d'attente MailCatcher, lorsqu'il est disponible, en haut. Lorsqu'il y a des e-mails dans la liste, le volet inférieur fait un bon travail pour vous montrer des informations à leur sujet, ce que nous verrons plus tard.

Exemple de code

Pour cet article, j'ai créé un script PHP simple, index.php, disponible dans le référentiel de projet et accessible à http://192.168.56.111. Il utilise SwiftMailer pour se connecter à MailCatcher et envoyer un e-mail à chargement. Vous pouvez voir dans le code ci-dessous une page HTML assez standard.

<span>git clone git@github.com:sitepoint-examples/mailcatcher-article.git</span>
Copier après la connexion
Copier après la connexion

Il comprend Mail-chargedeur.php, qui est disponible ci-dessous.

vagrant up
Copier après la connexion
Copier après la connexion

Si vous n'êtes pas familier avec l'article de SwiftMailer Aurelio ici sur SitePoint offre une excellente introduction. Soit dit en passant, c'est son code que j'ai utilisé pour cet exemple. Merci Aurelio.

Fondamentalement, il n'y a qu'une seule ligne qui est importante pour nous à noter, ce qui suit:

<span>sudo apt-get install -y vim curl python-software-properties lynx nginx
</span><span>sudo apt-get install -y php5-fpm php5-memcache memcached php-apc
</span><span>sudo apt-get install -y build-essential libsqlite3-dev ruby1.9.3
</span><span>sudo gem install mailcatcher
</span><span>sudo mailcatcher --http-ip 0.0.0.0</span>
Copier après la connexion
Copier après la connexion

Cela crée une connexion au serveur MailCatcher que nous venons de configurer. C'est tout, rien d'extraordinaire! J'ai maintenant rechargé la page trois fois, qui a envoyé trois e-mails. Vous pouvez voir qu'ils sont répertoriés dans MailCatcher dans l'image ci-dessous.

Débogage par e-mail avec MailCatcher

J'ai cliqué sur la première entrée, qui montre les détails reçus, des détails et du sujet, ainsi que le corps de l'e-mail. Si nous passons à l'onglet Source, comme dans l'image ci-dessous, nous pouvons voir les détails de l'e-mail brut:

Débogage par e-mail avec MailCatcher

via le troisième onglet, nous pouvons utiliser Fractal pour analyser le contenu de notre e-mail. Je vais ignorer cela aujourd'hui car il est au-delà de la portée de cet article.

Nous sommes tous définis

avec cela fait, nous pouvons désormais créer des e-mails comme nous le ferons autrement, en définissant les destinataires, les sujets, les pièces jointes, etc., comme je l'ai ci-dessus, et savoir qu'ils n'iront jamais réellement aux adresses réelles.

Nous pouvons écrire des tests pour vérifier que le code fonctionne comme il se doit. Nous pouvons vérifier le courrier envoyant un flux de travail, vérifier les contenus du message, les destinataires, les en-têtes, etc. C'est aussi pratique que possible, sans envoyer de rien en dehors de notre environnement.

Maintenant, nous pouvons être assurés que nos clients (et leurs clients) ne recevront jamais d'e-mails qui ne leur ont jamais été destinés. Quel soulagement.

Envelopper

Maintenant, il s'agit d'un exemple plutôt trivial, uniquement en utilisant un simple extrait de code SwiftMailer pour l'exemple. Je suis sûr que vos bases de code sont beaucoup plus complexes et sophistiquées que cet exemple.

Mais je suis sûr que dans vos applications, vous aurez des configurations de débogage et de test disponibles, où vous pouvez définir l'hôte et le port en conséquence, en le différenciant de Live. Ce faisant, aucun autre code n'aura jamais besoin de changer, et vous pouvez profiter des avantages de la tranquillité d'esprit que MailCatcher apporte.

utilisez-vous déjà MailCatcher? Quelle est votre expérience de l'intégration? Y a-t-il eu des problèmes qui vous ont pris au courant? Partagez vos réflexions dans les commentaires.

Des questions fréquemment posées sur MailCatcher

Comment installer MailCatcher sur mon système?

L'installation de MailCatcher est un processus simple. Tout d'abord, vous devez vous assurer que Ruby et Rubygems sont installés sur votre système. Une fois que vous avez ces conditions préalables, vous pouvez installer MailCatcher en exécutant la commande GEM Installer MailCatcher dans votre terminal. Une fois l'installation terminée, vous pouvez démarrer MailCatcher en exécutant la commande MailCatcher dans votre terminal. Vous devriez maintenant pouvoir accéder à l'interface Web de MailCatcher sur http: // localhost: 1080.

Comment configurer mon application pour utiliser MailCatcher?

La configuration de votre application pour utiliser MailCatcher implique le paramètre de paramètre Les paramètres SMTP de votre application pour pointer le serveur SMTP de MailCatcher. Le serveur s'exécute sur localhost et écoute le port 1025. Le processus exact pour définir ces valeurs dépendra de la langue et du cadre de votre application, mais en général, vous devrez définir l'adresse SMTP sur «LocalHost» et le port SMTP sur «1025 '.

Puis-je utiliser MailCatcher dans un environnement de production?

MAINCATCHER n'est pas conçu pour être utilisé dans un environnement de production. Il s'agit d'un outil de développement destiné à être utilisé dans un environnement de développement local. L'utilisation de MailCatcher dans un environnement de production peut entraîner des e-mails perdus et d'autres problèmes. Pour les environnements de production, vous devez utiliser un serveur SMTP robuste et prêt pour la production.

Comment afficher les e-mails envoyés par mon application dans MailCatcher?

Une fois que vous avez configuré votre application pour utiliser MailCatcher et ont commencé le serveur MailCatcher, tous les e-mails envoyés par votre application seront capturés par MailCatcher et affichés dans son interface Web. Vous pouvez accéder à cette interface en naviguant vers http: // localhost: 1080 dans votre navigateur Web. Ici, vous verrez une liste de tous les e-mails capturés par MailCatcher, et vous pouvez cliquer sur n'importe quel e-mail pour afficher son contenu.

Comment effacer les e-mails de MailCatcher?

Effacer les e-mails de MailCatcher est aussi simple que de cliquer sur le bouton «Effacer» dans l'interface Web MailCatcher. Cela supprimera tous les e-mails de l'interface. Veuillez noter qu'une fois les e-mails effacés, ils ne peuvent pas être récupérés.

Puis-je utiliser MailCatcher avec Docker?

Oui, vous pouvez utiliser MailCatcher avec Docker. Il y a des images Docker disponibles qui incluent MailCatcher, et vous pouvez également créer votre propre Dockerfile pour inclure MAINCATCHER dans votre configuration Docker. Lorsque vous exécutez MailCatcher dans un conteneur Docker, vous devrez vous assurer que les ports appropriés sont exposés afin que votre application puisse se connecter au serveur SMTP MailCatcher.

Comment résoudre les problèmes avec MailCatcher?

Si vous avez des problèmes avec MailCatcher, la première étape consiste à vérifier la sortie de votre terminal pour les messages d'erreur. Ces messages peuvent souvent fournir des indices sur ce qui ne va pas. Si vous avez du mal à envoyer des e-mails, assurez-vous que les paramètres SMTP de votre application sont correctement configurés pour pointer le serveur SMTP de MailCatcher.

Puis-je utiliser MailCatcher avec plusieurs projets?

Oui, vous pouvez utiliser MailCatcher avec plusieurs projets. Tant que chaque projet est configuré pour envoyer des e-mails au même serveur SMTP (c'est-à-dire le serveur SMTP de MailCatcher), MailCatcher attrapera les e-mails de tous ces projets.

Comment arrêter le serveur MailCatcher?

Vous pouvez arrêter le serveur MailCatcher en appuyant sur CTRL C dans le terminal où vous avez commencé MailCatcher. Alternativement, si vous avez démarré MailCatcher comme processus d'arrière-plan, vous pouvez l'arrêter en exécutant la commande killall mailcatcher.

Puis-je personnaliser l'apparence de l'interface Web de MailCatcher?

L'aspect et La sensation de l'interface Web MailCatcher n'est pas personnalisable hors de la boîte. Cependant, comme MailCatcher est open-source, vous pouvez potentiellement modifier le code source pour personnaliser l'interface. Veuillez noter que cela nécessiterait une bonne compréhension de Ruby et du Sinatra Web Framework, avec lequel MailCatcher est construit.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal