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): Vollständige Anleitung



In der modernen Webentwicklung ist die Möglichkeit, E-Mails programmatisch zu versenden, eine kritische Funktion für jede ernsthafte Anwendung. Ob Registrierungsbestätigung, Passwort-Zurücksetzung, Benachrichtigungen oder Marketing-Kampagnen – Node.js bietet mehrere leistungsstarke Lösungen für die Integration von E-Mail-Funktionen. In diesem Artikel werden wir die drei gängigsten Ansätze im Detail behandeln: die eingebaute Bibliothek nodemailer, den Cloud-Dienst SendGrid und die flexible API Mailgun.



Warum braucht man eine separate Bibliothek zum E-Mail-Versand?

Node.js verfügt über keine integrierten Mittel zur Arbeit mit dem SMTP-Protokoll oder REST-APIs von E-Mail-Diensten. Daher verwenden Entwickler spezialisierte Bibliotheken, die Folgendes übernehmen:

  • Erstellung korrekter MIME-Nachrichten (einschließlich HTML, Anhänge, Inline-Bilder);
  • Verwaltung von Warteschlangen und Wiederholungsversuchen bei Netzwerkfehlern;
  • Sichere Speicherung und Übertragung von Anmeldedaten;
  • Unterstützung gängiger E-Mail-Anbieter (Gmail, Yandex, Mail.ru, Unternehmensserver).


1. Nodemailer – universeller SMTP-Client

Nodemailer ist der De-facto-Standard für den E-Mail-Versand in Node.js. Es unterstützt sowohl klassisches SMTP als auch die Integration mit OAuth2. Die Bibliothek arbeitet ohne zusätzliche Abhängigkeiten und ermöglicht das Senden von E-Mails über jeden SMTP-Server.



Installation

npm install nodemailer


Basisbeispiel für den Versand über Gmail SMTP

const nodemailer = require('nodemailer');

const transporter = nodemailer.createTransport({ host: 'smtp.gmail.com', port: 587, secure: false, // true für 465, false für andere auth: { user: 'your-email@gmail.com', pass: 'your-app-password' // Verwenden Sie ein App-Passwort, nicht Ihr Hauptpasswort! }});

const mailOptions = { from: '"Sender Name" <your-email@gmail.com>', to: 'recipient@example.com', subject: 'Hallo von Node.js', text: 'Dies ist eine einfache Text-E-Mail.', html: '<b>Dies ist fetter Text in HTML</b>'};

transporter.sendMail(mailOptions, (error, info) => { if (error) { return console.log('Fehler:', error); } console.log('E-Mail gesendet: %s', info.messageId);});


Arbeiten mit Anhängen

mailOptions.attachments = [    {   // Datei auf der Festplatte        filename: 'document.pdf',        path: '/path/to/document.pdf'    },    {   // Inhalt als Zeichenkette        filename: 'notes.txt',        content: 'Textdatei, spontan erstellt'    }];


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

SendGrid (jetzt Teil von Twilio) bietet eine leistungsstarke REST-API und garantiert eine hohe Zustellbarkeit. Die Bibliothek @sendgrid/mail vereinfacht die Integration. Geeignet für Projekte, bei denen Analysen zu Öffnungen, Klicks und Abmeldungen wichtig sind.



Installation

npm install @sendgrid/mail


Beispiel für den Versand

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

const msg = { to: 'recipient@example.com', from: 'sender@yourdomain.com', // Die Domain muss in SendGrid verifiziert sein subject: 'Benachrichtigung vom Dienst', text: 'Textversion der E-Mail', html: '<h1>Hallo!</h1><p>Diese E-Mail wurde über SendGrid gesendet.</p>',};

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


Versand mit dynamischen Vorlagen

const msg = {    to: 'user@example.com',    from: 'test@example.com',    templateId: 'd-xxxxxxxxxxxxxxxxxxxx', // Vorlagen-ID von SendGrid    dynamicTemplateData: {                    

Empfehlungen