Skip to main content

Nodemailer Provider

Package: @nauth-toolkit/email-nodemailer Type: Email Provider

npm install @nauth-toolkit/email-nodemailer

Exports

ExportType
NodemailerEmailProviderClass

Constructor

new NodemailerEmailProvider(options: NodemailerOptions)

Options

OptionTypeRequiredDescription
transportTransportOptionsYesNodemailer transport config
defaultsDefaultsOptionsNoDefault email options
useTemplatesbooleanNoEnable HTML template rendering. When false, sends plain text only. Default: true
templateEngineTemplateEngineNoCustom template engine. Defaults to built-in Handlebars engine
previewbooleanNoLog preview URL for test messages (Ethereal/Nodemailer preview). Default: false
skipVerificationbooleanNoSkip SMTP transport verification on startup. Default: false

TransportOptions

The transport option accepts any valid Nodemailer transport configuration, including:

SMTP Transport:

OptionTypeDescription
hoststringSMTP hostname
portnumberSMTP port (25, 465, 587)
securebooleantrue for 465, false otherwise
servicestringPredefined service (gmail, etc.)
auth.userstringSMTP username
auth.passstringSMTP password
poolbooleanUse connection pooling
maxConnectionsnumberMax concurrent connections

AWS SES SDK Transport:

OptionTypeDescription
SES.sesClientSESv2ClientAWS SDK v3 SES client instance
SES.SendEmailCommandSendEmailCommandAWS SDK v3 SendEmailCommand class

The transport can also be a pre-configured Transporter instance or any raw Nodemailer transport configuration.

DefaultsOptions

OptionTypeDescription
fromstringDefault sender
replyTostringDefault 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,
},
},
})

Uses AWS SDK v3 with automatic IAM role discovery. Perfect for EC2/ECS/containers.

npm install @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.