Laravel
Laravel 11 & 10 • Chapitre 4 : Fonctionnalités Avancées

Envoi d'Emails (Mailables) & Notifications Multi-Canaux

Laravel transforme l'envoi d'emails en une expérience fluide. Grâce aux Mailables modernes (avec les méthodes envelope() et content()) et au système de Notifications, diffusez vos messages par Email, Base de données (cloche du site), SMS ou Slack en une seule ligne de code.

✉️
Mailables Modernes

Syntaxe Laravel 10/11 : séparation claire via envelope(), content() et attachments().

🎨
Templates Markdown

Composants prêts à l'emploi (boutons, tableaux, encadrés) responsive sur mobile et compatibles avec tous les clients mail.

🔔
Multi-Canaux

$user->notify() envoie l'email ET alimente la table notifications pour la cloche d'alertes en un coup.

⚡
Envoi Asynchrone

Utilisez Mail::to(...)->queue() pour ne pas ralentir le temps de réponse de votre application.

app/Mail/OrderShippedMail.php (Syntaxe Moderne Laravel 11)
// Commande Artisan : php artisan make:mail OrderShippedMail --markdown=emails.orders.shipped

namespace AppMail;

use AppModelsOrder;
use IlluminateBusQueueable;
use IlluminateContractsQueueShouldQueue;
use IlluminateMailMailable;
use IlluminateMailMailablesContent;
use IlluminateMailMailablesEnvelope;
use IlluminateQueueSerializesModels;

class OrderShippedMail extends Mailable implements ShouldQueue
{
    use Queueable, SerializesModels;

    public function __construct(public Order $order) {}

    // 1. Définition de l'enveloppe (Sujet, Expéditeur, Tags)
    public function envelope(): Envelope
    {
        return new Envelope(
            subject: 'Votre commande #' . $this->order->id . ' est en route !',
        );
    }

    // 2. Définition du contenu et de la vue Markdown
    public function content(): Content
    {
        return new Content(
            markdown: 'emails.orders.shipped',
        );
    }
}

// Dans le contrôleur :
// Envoi différé asynchrone sans faire patienter le client :
Mail::to($order->customer_email)->queue(new OrderShippedMail($order));

Simulateur Prévisualiseur d'Email & Notification Multi-Canaux

Simulation Rendu Mailer

Choisissez un événement métier et simulez son envoi pour prévisualiser instantanément le rendu HTML de l'email ainsi que la pastille de notification reçue sur le site.

Boîte de Réception : claire@learnweb.testSMTP 250 OK
LearnWeb Store
Votre commande #1042 est en route !

Bonne nouvelle ! Votre colis a été pris en charge par le transporteur et vous sera livré d'ici 48 heures.

Article : Clavier Mécanique M3 • Montant : 89.90 €
Cet email a été envoyé automatiquement par le service Mailer de Laravel.
Canaux Notifiés :
📧
Canal Mail
Délivré via driver SMTP
🔔
Canal Database (Cloche)
Enregistré dans table SQL
Cloche Utilisateur :1
$user->unreadNotifications : 1 non lue(s).
Outils Recommandés pour Tester vos Emails en Dév
1. Driver 'log'

En local, définissez MAIL_MAILER=log dans votre .env. Tout le contenu des emails sera simplement écrit dans storage/logs/laravel.log.

2. Mailpit / Mailtrap

Un faux serveur SMTP capturant tous les emails sortants sans jamais les envoyer aux vrais clients. Indispensable pour vérifier le design responsive.

3. Prévisualisation dans le Navigateur

Retournez directement le mailable depuis une route : Route::get('/mail-preview', fn () => new OrderShippedMail($order)); pour le voir en live !