Generates and sends transactional emails based on Deenruv server events, using MJML + Handlebars templates (or React Email) and Nodemailer for delivery.
pnpm add @deenruv/email-pluginimport { defaultEmailHandlers, EmailPlugin } from '@deenruv/email-plugin';
import path from 'path';
const config = {
plugins: [
EmailPlugin.init({
handlers: defaultEmailHandlers,
templatePath: path.join(__dirname, 'static/email/templates'),
transport: {
type: 'smtp',
host: 'smtp.example.com',
port: 587,
auth: {
user: 'username',
pass: 'password',
},
},
}),
],
};EmailPlugin.init({
devMode: true,
route: 'mailbox',
handlers: defaultEmailHandlers,
templatePath: path.join(__dirname, 'static/email/templates'),
outputPath: path.join(__dirname, 'test-emails'),
});In dev mode, emails are saved as HTML files and a web-based mailbox UI is available at the configured route (e.g. http://localhost:6100/mailbox).
Options:
| Option | Type | Default | Description |
|---|---|---|---|
handlers |
EmailEventHandler[] |
required | Event handlers that define which events trigger emails |
templatePath |
string |
- | Path to MJML/Handlebars email templates (deprecated, use templateLoader) |
templateLoader |
TemplateLoader |
FileBasedTemplateLoader |
Custom template loader for dynamic template resolution |
transport |
EmailTransportOptions | fn |
required | Email transport config (SMTP, SES, sendmail, file, none) or dynamic function |
globalTemplateVars |
object | fn |
- | Variables available to all templates (static or async function with RequestContext) |
emailSender |
EmailSender |
NodemailerEmailSender |
Custom email sending implementation |
emailGenerator |
EmailGenerator |
HandlebarsMjmlGenerator |
Custom email generation implementation |
useReactEmail |
boolean |
false |
Use React Email for template rendering |
Transport types: smtp, ses (AWS SES), sendmail, file, none, testing
- MJML + Handlebars templates - Responsive email markup with dynamic data
- React Email support - Alternative template engine using React components
- Default event handlers - Order confirmation, email verification, password reset, email change
- Customizable handlers - Extend/modify default handlers or create entirely new ones
- Dynamic SMTP settings - Channel-aware transport configuration via async function
- Job queue integration - Emails processed via the Deenruv job queue with retry support
- Dev mailbox - Web-based email preview UI for development
- Global template variables - Static or async variables (e.g. storefront URL, theme colors)
- Template helpers - Built-in
formatMoneyandformatDateHandlebars helpers - File attachments - Support for email attachments via Nodemailer
- AWS SES support - Native SES transport option
Server-only plugin. No Admin UI extensions.
No GraphQL API extensions. Email sending is triggered by internal Deenruv events.