Nodemailer Provider
Package: @nauth-toolkit/email-nodemailer
Type: Email Provider
- npm
- Yarn
- pnpm
- Bun
npm install @nauth-toolkit/email-nodemailer
yarn add @nauth-toolkit/email-nodemailer
pnpm add @nauth-toolkit/email-nodemailer
bun add @nauth-toolkit/email-nodemailer
Exports
| Export | Type |
|---|---|
NodemailerEmailProvider | Class |
Constructor
new NodemailerEmailProvider(options: NodemailerOptions)
Options
| Option | Type | Required | Description |
|---|---|---|---|
transport | TransportOptions | Yes | Nodemailer transport config |
defaults | DefaultsOptions | No | Default email options |
useTemplates | boolean | No | Enable HTML template rendering. When false, sends plain text only. Default: true |
templateEngine | TemplateEngine | No | Custom template engine. Defaults to built-in Handlebars engine |
preview | boolean | No | Log preview URL for test messages (Ethereal/Nodemailer preview). Default: false |
skipVerification | boolean | No | Skip SMTP transport verification on startup. Default: false |
TransportOptions
The transport option accepts any valid Nodemailer transport configuration, including:
SMTP Transport:
| Option | Type | Description |
|---|---|---|
host | string | SMTP hostname |
port | number | SMTP port (25, 465, 587) |
secure | boolean | true for 465, false otherwise |
service | string | Predefined service (gmail, etc.) |
auth.user | string | SMTP username |
auth.pass | string | SMTP password |
pool | boolean | Use connection pooling |
maxConnections | number | Max concurrent connections |
AWS SES SDK Transport:
| Option | Type | Description |
|---|---|---|
SES.sesClient | SESv2Client | AWS SDK v3 SES client instance |
SES.SendEmailCommand | SendEmailCommand | AWS SDK v3 SendEmailCommand class |
The transport can also be a pre-configured Transporter instance or any raw Nodemailer transport configuration.
DefaultsOptions
| Option | Type | Description |
|---|---|---|
from | string | Default sender |
replyTo | string | Default reply-to |
Presets
Gmail
new NodemailerEmailProvider({
transport: { service: 'gmail', auth: { user: 'email', pass: 'app-password' } },
})
SendGrid
new NodemailerEmailProvider({
transport: { host: 'smtp.sendgrid.net', port: 587, auth: { user: 'apikey', pass: API_KEY } },
})
AWS SES (SMTP)
new NodemailerEmailProvider({
transport: {
host: 'email-smtp.us-east-1.amazonaws.com',
port: 587,
auth: {
user: process.env.AWS_ACCESS_KEY_ID,
pass: process.env.AWS_SECRET_ACCESS_KEY,
},
},
})
AWS SES (SDK with IAM Roles) - Recommended
Uses AWS SDK v3 with automatic IAM role discovery. Perfect for EC2/ECS/containers.
- npm
- Yarn
- pnpm
- Bun
npm install @aws-sdk/client-sesv2
yarn add @aws-sdk/client-sesv2
pnpm add @aws-sdk/client-sesv2
bun add @aws-sdk/client-sesv2
import { SESv2Client, SendEmailCommand } from '@aws-sdk/client-sesv2';
import { NodemailerEmailProvider } from '@nauth-toolkit/email-nodemailer';
new NodemailerEmailProvider({
transport: {
SES: {
sesClient: new SESv2Client({
region: process.env.AWS_REGION || 'us-east-1',
// Credentials automatically discovered from:
// 1. IAM role (when running on EC2/ECS/containers) - RECOMMENDED
// 2. Environment variables (AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY)
// 3. Shared credentials file (~/.aws/credentials)
}),
SendEmailCommand,
},
},
defaults: {
from: 'My App <noreply@myapp.com>',
},
})
tip
The AWS SES SDK transport automatically uses IAM roles when running on AWS infrastructure (EC2, ECS, Lambda), eliminating the need to manage credentials manually.