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'),
    },
  ],
});