@pearl-framework/mail
v0.1.3
Published
Pearl.js mail — Nodemailer-powered mailable classes, transports, and queue support
Readme
@pearl-framework/mail
Mailable classes and multi-transport email sending for Pearl.js
Installation
pnpm add @pearl-framework/mail @pearl-framework/core nodemailerUsage
Define a mailable
import { Mailable } from '@pearl-framework/mail'
export class WelcomeEmail extends Mailable {
constructor(private readonly user: User) { super() }
build(): this {
return this
.to(this.user.email)
.from({ name: 'Pearl App', address: '[email protected]' })
.subject('Welcome to Pearl!')
.html(`<h1>Hi ${this.user.name}, welcome aboard!</h1>`)
.text(`Hi ${this.user.name}, welcome aboard!`)
}
}Send mail
const mailer = app.make(Mailer)
await mailer.send(new WelcomeEmail(user))
await mailer.sendBulk([new WelcomeEmail(u1), new WelcomeEmail(u2)])MailServiceProvider
export class AppMailServiceProvider extends MailServiceProvider {
protected config = {
driver: process.env.MAIL_DRIVER as MailDriver,
from: { name: 'Pearl App', address: process.env.MAIL_FROM! },
smtp: {
host: process.env.MAIL_HOST!,
port: Number(process.env.MAIL_PORT),
auth: { user: process.env.MAIL_USER!, pass: process.env.MAIL_PASS! },
},
}
}Transports
| Transport | Use case |
|-----------|---------|
| SmtpTransport | Production SMTP (Mailgun, Postmark, etc.) |
| SesTransport | AWS SES |
| LogTransport | Development — logs to console |
| ArrayTransport | Testing — captures emails in memory |
