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:installMAIL_MAILER=mailboxSe 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=smtpMailbox è 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.
Fonte originale:
https://laravel-news.com/mailbox-for-laravelAltri articoli recenti
Laravel AI 1.1 e 1.2: Agent Skills, Cohere e structured output più solidi
Le release 1.1.0 e 1.2.0 di laravel/ai portano gli Agent Skills, l'approvazione obbligatoria per i tool built-in e nuovi provider come Cohere e Laya self-hosted. Sul fronte qualità arrivano i fix allo structured output per Bedrock e il supporto alle provider options. Aggiornati anche i modelli di default, con Claude 4.7+ che ignora i sampling params.
Laravel 13.35.0: scheduler più controllabile, code più flessibili e response Markdown
Laravel 13.35.0 porta Schedule::alwaysOnOneServer(), il supporto a schedule:interrupt per i comandi di lunga durata, --memory in percentuale per queue:work e il nuovo metodo markdown() sulla response factory. Tante piccole migliorie anche a test, view compilate in parallelo e dischi local.
BashBox: un interprete Bash in sandbox per agenti AI in PHP
BashBox è un interprete bash scritto in puro PHP che permette di eseguire gli script generati dagli agenti AI senza mai ricorrere a proc_open, exec o shell_exec. Ogni comando è una classe PHP che lavora su un filesystem virtuale, con limiti di esecuzione, quote disco e accesso di rete configurabili. Ideale per chi sviluppa agenti con il Laravel AI SDK o altre librerie simili.