Come inviare email in Laravel usando Mailtrap

Come inviare email in Laravel usando Mailtrap

By on Sat May 14 in Laravel, Mail, PHP


0
(0)

In questo articolo spiegherò cos’è Mailtrap Email Testing e come inviare email in Laravel usando Mailtrap Email Testing (in locale).

Introduzione

Nel 2020 ho sviluppato una piattaforma, basata su Laravel, che faceva largo uso di cron job e di invio di email. I cron job controllavano alcuni valori sul database, e gli script si occupavano di inviare email. Ogni email usa tipicamente un template Blade, costruito in HTML. Quindi è necessario testare come i messaggi vengono visualizzati dall’utente finale su Desktop, ma anche su tablet e mobile. Come fare?

Il test è essenziale per sviluppare un prodotto professionale. Purtroppo peró, invare una email in PHP da localhost non è una cosa semplice, basta vedere quante discussioni ci sono a riguardo in rete: gli sviluppatori devono configurare alcune impostazioni nei file php.ini, oppure nel sendmail.ini e a volte nonostante non ci sia nessun errore nel codice o nessun errore scritto nei log, sembra impossibile riuscire ad inviare le email. Il processo diventa frustrante e si trasforma in una perdita di tempo.

Cos’è Mailtrap?

Dopo qualche ricerca ho scoperto Mailtrap Email Sandbox, un servizio che è possibile utilizzare per “intrappolare” le e-mail, senza effettivamente inviarle al destinatario previsto. Mailtrap Email Testing è un servizio con piani a pagamento, ma con un piano gratuito disponibile, consigliato per testare il servizio o da usare per un progetto personale. Il piano personale gratuito ha alcune limitazioni, come per esempio il numero massimo mensile di email che si possono testare con Mailtrap, ovvero 100 email mensili.

Come funziona Mailtrap?

Direttamente dalla loro pagina di aiuto: Mailtrap Email Sandbox cattura le tue email in una casella di posta virtuale in modo che tu possa testare e ottimizzare le tue campagne email prima di inviarle agli utenti reali.

Mailtrap Email Testing è ben noto tra gli sviluppatori web come uno strumento online per il test sicuro delle e-mail in ambienti di sviluppo e di staging. È spesso usato come un falso server SMTP per catturare le email di prova, visualizzarle in caselle di posta virtuali e fare il debug prima dell’invio agli utenti reali.

Configurazione Mailtrap

Per prima cosa è necessario creare un account Mailtrap, è sufficiente creare un account su https://mailtrap.io. È possibile creare un account sfruttando il proprio account Google, Github, Office365 oppure registrarsi nel più classico dei modi, con email e password.

Dopo aver effettuato il login con successo, viene visualizzata la homepage.

Mailtrap Email Testing - Start testing
Mailtrap: crea una nuova inbox

A questo punto è possibile recuperare le credenziali SMTP/POP3 del proprio account e utilizzarle nel proprio progetto Laravel (PHP) in sviluppo. Cliccare quindi sulbottone Start Testing e poi su Show Credentials:

Mailtrap Email Testing - Show credentials
Mailtrap: visualizza credenziali

Configurazione Laravel

Mailtrap offre la possibilità di integrare le sue funzionalità in vari linguaggi di programmazione e framework, e offre degli snippet preconfigurati da usare nei propri progetti. É sufficiente cliccare su Integrations:

Mailtrap Email Testing - Show integrations
Mailtrap: Integrazioni

Ecco la lista di linguaggi disponibili:

  • Command Line
  • Ruby
  • Python
  • PHP
  • Node.js
  • Java/Scala
  • Perl
  • C#
  • Other

In questo articolo ci occupiamo di integrare Mailtrap in un progetto Laravel.

Laravel fornisce un’API semplice e pulita di mailing grazie alla popolare libreria SwiftMailer. Con l’impostazione predefinita di Laravel è possibile impostare la propria configurazione di mailing impostando alcuni valori nel file .env nella directory principale del progetto Laravel.

MAIL_MAILER=smtp
MAIL_HOST=smtp.mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=xxxxxxx
MAIL_PASSWORD=xxxxxxx
MAIL_ENCRYPTION=tls

Il gioco è fatto! Ora vediamo come inviare email in Laravel usando Mailtrap.

Ora non resta che configurare le proprie viste. Ogni email in Laravel usa un template Blade per visualizzare il suo contenuto. La documentazione Laravel è molto chiara ed esaustiva, ed è disponibile a questo indirizzo: Mail – Laravel.

Molto velocemente, ecco una lista step-by-step per creare una mail in Laravel:

  1. Creare una classe “mailable” con il comando artisan
php artisan make:mail OrderShipped
  1. configurare il mittente (from) nel metodo build() della classe appena creata
  2. impostare l’oggetto (subject) della mail nel metodo build() della classe appena creata
  3. configurare la vista (view) nel metodo build() della classe appena creata
  4. configurare gli eventuali parametri (with) da passare alla vista tramite il costruttore e gli attributi di classe
  5. realizzare la vista HTML che verrà visualizzata dall’utente
  6. scrivere il codice che richiama la classe “mailable” e invia effetiivamente l’email
Mail::to($user->email)->send(new OrderShipped($order));

Mailtrap inbox

A questo punto non resta che testare l’invio. Una volta eseguito il codice necessario in Laravel per inviare le mail da testare, è sufficiente aprire la pagina inboxes di Mailtrap Email Testing, selezionare l’inbox creata in precedenza e controllare i messaggi arrivati.

Possiamo quindi risolvere eventuali problemi di visualizzazione del messaggio ed essere pronti a rilasciare in produzione ottimi layout e template professionali per le nostre email.

Per qualunque domanda o dubbio, scrivetemi tramite il modulo dei contatti.

How useful was this post?

Click on a star to rate it!

Average rating 0 / 5. Vote count: 0

No votes so far! Be the first to rate this post.