spatie/laravel-database-mail-templates
Render Laravel mailables using email templates stored in your database. Map templates to mailable classes, use variables like {{ name }}, and optionally wrap HTML in a custom layout. Update subjects and content without redeploying.
Mailable classes, ensuring seamless integration with existing email workflows (queues, notifications, mailables). Complements packages like spatie/laravel-activitylog or spatie/laravel-permission for auditability.MailTemplate model) enable versioning, A/B testing, and multi-tenancy support via polymorphic relations or tenant-specific scopes.Mailable classes—just extend DatabaseMailTemplate and override resolveTemplate().mail_templates table (migrations provided), which must be backward-compatible with existing DB schemas (e.g., no breaking schema changes if using migrations).Mailable resolvers or email service providers (e.g., Mailgun, SendGrid).Cache::remember).@{{ }} or a custom filter.findOrFail or firstOrFail).is_active column).laravel-medialibrary for WYSIWYG).404 response.Mailable classes, Queue system, and Blade templating. Works alongside:
Mailer).Mailable classes to identify template-heavy emails.password_reset, welcome_email).MailTemplate model and seed initial templates.Mailable to extend DatabaseMailTemplate.{{ user.name }}).^9.0 or ^10.0).spatie/laravel-package-tools (for package boilerplate).resolveTemplate() to customize template resolution logic.MailTemplate model for additional fields (e.g., subject, cc_recipients).mail_templates table.DatabaseSeeder or a custom seeder).MailTemplate model extending Spatie’s base class.belongsToMany for multi-language templates).Mailable classes to use DatabaseMailTemplate.Schema::table for zero-downtime changes).composer update spatie/laravel-database-mail-templates.mail_templates table).php artisan cache:clear).Log::debug('Resolving template ID:', $templateId)).telescope or laravel-debugbar to inspect template variables.{{ user.first_name }}).TemplateRendererService) to isolate business logic.Cache::remember("template:{$templateId}", 3600, fn() => MailTemplate::find($
How can I help you explore Laravel packages today?