Streaming Large Attachments in Node.js
Stream 100 MB+ attachments incrementally using
AsyncIterable<Uint8Array> without loading complete files into memory:
import { createReadStream } from 'node:fs';
import { createMailer, smtp } from 'mailport';
const mailer = createMailer({
transport: smtp({
host: process.env.SMTP_HOST!,
port: 587,
auth: {
user: process.env.SMTP_USER!,
pass: process.env.SMTP_PASSWORD!,
},
}),
});
await mailer.send({
from: 'backup@example.com',
to: 'admin@example.com',
subject: 'Database Backup Export',
attachments: [
{
type: 'stream',
filename: 'db_backup_100mb.sql.gz',
stream: createReadStream('/var/backups/db_backup.sql.gz'),
},
],
});