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.
Syntaxe Laravel 10/11 : séparation claire via envelope(), content() et attachments().
Composants prêts à l'emploi (boutons, tableaux, encadrés) responsive sur mobile et compatibles avec tous les clients mail.
$user->notify() envoie l'email ET alimente la table notifications pour la cloche d'alertes en un coup.
Utilisez Mail::to(...)->queue() pour ne pas ralentir le temps de réponse de votre application.
// 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));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.
Bonne nouvelle ! Votre colis a été pris en charge par le transporteur et vous sera livré d'ici 48 heures.
En local, définissez MAIL_MAILER=log dans votre .env. Tout le contenu des emails sera simplement écrit dans storage/logs/laravel.log.
Un faux serveur SMTP capturant tous les emails sortants sans jamais les envoyer aux vrais clients. Indispensable pour vérifier le design responsive.
Retournez directement le mailable depuis une route : Route::get('/mail-preview', fn () => new OrderShippedMail($order)); pour le voir en live !