E-Mail-Versand mit JavaScript (Node.js): nodemailer, sendgrid, mailgun

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

E-Mail-Versand mit JavaScript (Node.js): nodemailer, sendgrid, mailgun



Der E-Mail-Versand ist eine der Schlüsselfunktionen moderner Webanwendungen: Benutzerregistrierung, Passwortzurücksetzung, Benachrichtigungen und Marketingkampagnen. Im Node.js-Ökosystem gibt es mehrere bewährte Lösungen, mit denen Sie E-Mail-Funktionalität in wenigen Minuten integrieren können. In diesem Artikel werden wir drei beliebte Tools im Detail besprechen: nodemailer, sendgrid und mailgun. Sie erfahren, wie Sie SMTP konfigurieren, E-Mails mit Anhängen und HTML-Vorlagen versenden und welche Metriken Sie verfolgen sollten.



1. Nodemailer – universeller SMTP-Client



Nodemailer ist die beliebteste Bibliothek für den E-Mail-Versand in Node.js. Sie unterstützt SMTP, SES, Sendmail und viele Transporte. Hauptvorteile:



  • Einfache Einrichtung über ein SMTP-Konto (Gmail, Yandex, Mail.ru).
  • Unterstützung für Anhänge, Inline-Bilder, HTML-Vorlagen.
  • Arbeit mit Warteschlangen und Verbindungspools.
  • Asynchroner Versand mit async/await.


Installation und grundlegender Versand

npm install nodemailer


const nodemailer = require('nodemailer');

const transporter = nodemailer.createTransport({ host: 'smtp.gmail.com', port: 587, secure: false, // true für Port 465 auth: { user: 'your-email@gmail.com', pass: 'your-password' // oder App-Passwort }});

const mailOptions = { from: '"Absender" <your-email@gmail.com>', to: 'recipient@example.com', subject: 'Hallo von Node.js!', text: 'Dies ist eine Test-E-Mail.', html: '<h1>Hallo!</h1><p>Dies ist die HTML-Version.</p>'};

const sendMail = async () => { const info = await transporter.sendMail(mailOptions); console.log('E-Mail gesendet:', info.messageId);};

sendMail().catch(console.error);


Versand mit Anhängen

const mailOptions = {  // ...Grundfelder  attachments: [    {      filename: 'document.pdf',      path: '/path/to/document.pdf'    },    {      filename: 'image.png',      content: fs.createReadStream('/path/to/image.png')    }  ]};


Wichtig: Verwenden Sie für Gmail ein App-Passwort oder OAuth2.



2. SendGrid – Cloud-Dienst für Transaktions-E-Mails



SendGrid (Teil von Twilio) bietet eine leistungsstarke API für den E-Mail-Versand mit hoher Zustellbarkeit. Geeignet für Startups und große Projekte. Hauptfunktionen:



  • API mit Zugriffsschlüsseln (ohne SMTP).
  • Dynamische Vorlagen (Handlebars).
  • Analysen: Öffnungen, Klicks, Abmeldungen.
  • Kostenloser Tarif bis zu 100 E-Mails/Tag.


Installation und Versand

npm install @sendgrid/mail


const sgMail = require('@sendgrid/mail');sgMail.setApiKey(process.env.SENDGRID_API_KEY);

const msg = { to: 'recipient@example.com', from: 'sender@example.com', subject: 'Transaktions-E-Mail', text: 'E-Mail-Text', html: '<strong>HTML-Inhalt</strong>', attachments: [ { content: 'base64encodedcontent', filename: 'invoice.pdf', type: 'application/pdf', disposition: 'attachment' } ]};

sgMail.send(msg) .then(() => console.log('E-Mail gesendet')) .catch(console.error);


Verwendung dynamischer Vorlagen

const msg = {  to: 'user@example.com',  from: 'noreply@mysite.com',  templateId: 'd-xxxxxxxxxxxxxxxx',  dynamicTemplateData: {    username: 'Ivan',    orderLink: 'https://mysite.com/order/123'  }};


3. Mailgun – für hohe

Empfehlungen