E-Mail-Versand mit TypeScript: Überblick über Bibliotheken und Tools
Das Versenden von E-Mails ist eine der Kernaufgaben von Webanwendungen. Für TypeScript (und seine Laufzeitumgebung Node.js) gibt es mehrere ausgereifte Lösungen. In diesem Artikel betrachten wir die beliebtesten Bibliotheken, ihre Konfiguration und Anwendungsbeispiele mit vollständiger Typisierung.
1. Nodemailer – universeller SMTP-Client
Nodemailer ist die beliebteste Bibliothek zum E-Mail-Versand in Node.js. Sie unterstützt SMTP, integrierte Transporte (Sendmail, SES) und ist dank eingebauter Typen vollständig mit TypeScript kompatibel.
Installation
npm install nodemailernpm install --save-dev @types/nodemailerBeispiel für den Versand über Gmail SMTP
import nodemailer from 'nodemailer';
interface EmailOptions { to: string; subject: string; text: string; html?: string;}
async function sendEmail(options: EmailOptions): Promise<void> { const transporter = nodemailer.createTransport({ service: 'gmail', auth: { user: process.env.EMAIL_USER, pass: process.env.EMAIL_PASS, }, });
await transporter.sendMail({ from: `"MyApp" <${process.env.EMAIL_USER}>`, to: options.to, subject: options.subject, text: options.text, html: options.html || options.text, });}
// VerwendungsendEmail({ to: 'user@example.com', subject: 'Hallo aus TypeScript!', text: 'Dies ist eine Test-E-Mail.',}).catch(console.error);Arbeiten mit Anhängen
await transporter.sendMail({ to: 'user@example.com', subject: 'Datei im Anhang', text: 'Sehen Sie sich das beigefügte Dokument an.', attachments: [ { filename: 'report.pdf', path: './files/report.pdf', }, ],});2. SendGrid – Cloud-basierter E-Mail-Dienst
SendGrid (jetzt Teil von Twilio) bietet eine leistungsstarke API zum Versand von Transaktions- und Marketing-E-Mails. Für TypeScript gibt es ein offizielles Paket mit vorgefertigten Typen.
Installation
npm install @sendgrid/mailBeispiel für den Versand mit Typisierung
import sgMail from '@sendgrid/mail';
sgMail.setApiKey(process.env.SENDGRID_API_KEY!);
interface SendGridMessage { to: string; from: string; subject: string; text: string; html?: string;}
async function sendViaSendGrid(msg: SendGridMessage): Promise<void> { try { await sgMail.send({ to: msg.to, from: msg.from, subject: msg.subject, text: msg.text, html: msg.html, }); console.log('E-Mail über SendGrid gesendet'); } catch (error) { console.error('SendGrid-Fehler:', error); }}
// VerwendungsendViaSendGrid({ to: 'client@example.com', from: 'noreply@myapp.com', subject: 'Registrierungsbestätigung', text: 'Willkommen!', html: '<h1>Willkommen!</h1><p>Vielen Dank für Ihre Registrierung</p>',});3. AWS SES – für hochlastige Systeme
AWS Simple Email Service (SES) ist eine Unternehmenslösung zum Versenden großer E-Mail-Volumina. Es wird über das SDK @aws-sdk/client-ses verwendet.
Installation
npm install @aws-sdk/client-sesBeispiel mit TypeScript
import { SESClient, SendEmailCommand } from '@aws-sdk/client-ses';
const sesClient = new SESClient({ region: 'us-east-1', credentials: { accessKeyId: process.env.AWS_ACCESS_KEY!, secretAccessKey: process.env.AWS_SECRET_KEY!, },});
interface SESEmailParams { to: string[]; from: string; subject: string; bodyText: string; bodyHtml?: string;}
async function sendViaSES(params: SESEmailParams): Promise<void> { const command = new SendEmailCommand({ Destination: { ToAddresses: params.to, },