notiziephp.it

Mailbox per Laravel: visualizzare in anteprima e testare le email renderizzate

Traduzione da Laravel News
30 Settembre 2026 Tempo di lettura: 3 minuti
Mailbox per Laravel: visualizzare in anteprima e testare le email renderizzate

Mailbox for Laravel intercetta le email in uscita e le mostra all'interno della tua applicazione su /mailbox. Creato da Redberry e mantenuto da Nika Jorjoliani, il pacchetto offre agli sviluppatori una inbox locale senza bisogno di un servizio o di un processo mail separato. La sua API di test permette inoltre di verificare il messaggio dopo che Laravel lo ha renderizzato.

Configurare la inbox locale

Il pacchetto richiede PHP 8.3 o successivo e supporta Laravel dalla versione 10 alla 13. Installalo come dipendenza di sviluppo, esegui il suo comando di installazione e seleziona il mailer mailbox:

composer require redberry/mailbox-for-laravel --dev
php artisan mailbox:install
MAIL_MAILER=mailbox

Se il tuo deploy di staging esegue composer install --no-dev, installa Mailbox come dipendenza normale per poterlo usare anche in quell'ambiente.

Il comando di installazione pubblica gli asset e la configurazione ed esegue le migration del pacchetto. Il transport intercetta i Mailable, le notifiche inviate via mail e i messaggi Mail::raw(). Per impostazione predefinita, i messaggi intercettati finiscono in un database SQLite dedicato in storage/app/mailbox/mailbox.sqlite. In alternativa puoi usare una connessione a un database esistente o il file store del pacchetto.

Apri /mailbox per ispezionare la inbox. Puoi passare tra le viste HTML, testo semplice e messaggio grezzo, visualizzare in anteprima o scaricare gli allegati e cercare o filtrare per destinatario. L'elenco dei messaggi si aggiorna senza refresh manuale.

Eseguire asserzioni sui messaggi renderizzati

Una volta che la tua applicazione invia una email tramite Mailbox, puoi eseguire asserzioni sull'HTML renderizzato, sui destinatari e sugli allegati. Per una conferma d'ordine, il test potrebbe essere simile a questo:

use Redberry\MailboxForLaravel\Facades\Mailbox;

Mailbox::assertSentCount(1);

Mailbox::firstSent()
->assertHasSubject('Order Confirmation')
->assertHasTo('[email protected]')
->assertSeeInHtml('Order #12345')
->assertHasAttachment('receipt.pdf', 'application/pdf');

Il trait opzionale InteractsWithMailbox cancella i messaggi intercettati prima di ogni test e ti mette a disposizione $this->mailbox() come alternativa alla facade. Puoi anche verificare il corpo in testo semplice, il mittente, gli header e il numero di allegati. Se un test intercetta più messaggi, passa una callback a firstSent() per sceglierne uno.

Intercettare la posta e consegnarla

Con MAIL_MAILER=mailbox, i messaggi arrivano alla dashboard e si fermano lì. Per consegnarli anche, punta MAILBOX_DECORATE verso uno dei mailer configurati:

MAIL_MAILER=mailbox
MAILBOX_DECORATE=smtp

Mailbox è disabilitato per impostazione predefinita in produzione. Mantieni configurato il tuo normale mailer di produzione. Se MAIL_MAILER=mailbox resta impostato mentre MAILBOX_ENABLED=false, le email non verranno inviate.

Il gate predefinito della dashboard consente l'accesso al di fuori della produzione. In staging, proteggi /mailbox con l'autenticazione e definisci un gate viewMailbox restrittivo. Le email intercettate possono contenere token di reset e dati personali.

La pulizia automatica è disattivata per impostazione predefinita. Imposta MAILBOX_RETENTION_SCHEDULE=true per eseguire una pulizia giornaliera dei messaggi che superano il periodo di conservazione configurato.

Per la documentazione completa, le opzioni di configurazione e l'API di test, consulta il repository GitHub.

Condividi su: LinkedIn

Altri articoli recenti