Come inviare email in Laravel usando MailTrap 0 (0)

Come inviare email in Laravel usando MailTrap

By on Sat May 14 in Laravel, MailTrap, PHP


In questo articolo spiegherò cos’è MailTrap e come inviare email in Laravel usando MailTrap (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, un servizio che è possibile utilizzare per “intrappolare” le e-mail, senza effettivamente inviarle al destinatario previsto. MailTrap è 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 500 email mensili.

Come funziona MailTrap?

Direttamente dalla loro pagina di aiuto: Mailtrap 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 è 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 collegarsi alla pagina di registrazione. È possibile creare un account sfruttando il proprio account Google, Github, Office365 oppure registrarsi nel più classico dei modi, con email e password.

A quel punto è necessario creare una INBOX in cui verranno catturate le email.

Come inviare email in Laravel usando MailTrap: crea una nuova inbox
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 sulla casella di inbox appena creata (Demo Inbox nel mio caso) e poi su Show Credentials:

Come inviare email in Laravel usando MailTrap: visualizza credenziali
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:

Come inviare email in Laravel usando MailTrap: Integrazioni
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, 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.

Leave a Reply

Your email address will not be published. Required fields are marked *

No comments yet. Be the first one!