Senden von E-Mails mit Anhängen über SendGrid und Node.js

November 19, 2019
Autor:in:

Senden von E-Mails mit Anhängen über SendGrid und Node.js


Hallo und Danke fürs Lesen! Dieser Blogpost ist eine Übersetzung von Sending Email with Attachments using SendGrid and Node.js. Während wir unsere Übersetzungsprozesse verbessern, würden wir uns über Dein Feedback an help@twilio.com freuen, solltest Du etwas bemerken, was falsch übersetzt wurde. Wir bedanken uns für hilfreiche Beiträge mit Twilio Swag :)

Wir senden E-Mails aus unserer Node.js-App über die Twilio SendGrid API. Jetzt möchten wir aber auch Dateien an unsere E-Mails anhängen. Mit der Twilio SendGrid-API ist das Senden von Anhängen ein Kinderspiel. In diesem Blog fügen wir ein PDF-Dokument an eine E-Mail an, die über SendGrid gesendet wird. Wenn das Senden von E-Mails über SendGrid noch Neuland ist, bietet mein Kollege Sam in diesem Blog dazu weitere Informationen. Oder falls ein Video mehr nach deinem Geschmack ist, dann sieh dir das Video zu diesem Thema von meinem Kollegen Brent an. Wir setzen an der Stelle an, an der dieser Post endet.

Voraussetzungen

Bevor wir beginnen, benötigen wir Folgendes:

Einrichtung

Falls noch nicht geschehen, registrieren wir uns für ein kostenloses SendGrid-Konto. Im Rahmen dieses Tutorials können wir die kostenlose Stufe nutzen. Nachdem wir unser Konto eingerichtet haben, erstellen wir einen API-Schlüssel. Wir können ihm einen beliebigen Namen geben, aber wir brauchen ihn später noch.

Screenshot der Erstellung eines API-Schlüssels in sendgrid

Eine gute Idee ist es, diesen API-Schlüssel beim Speichern als Umgebungsvariable festzulegen, auf die wir über unseren JavaScript-Code zugreifen können. Dadurch vermeiden wir, ihn direkt in unseren Code schreiben zu müssen. Wir legen den Wert der Umgebungsvariablen SENDGRID_API_KEY auf den API-Schlüssel unseres SendGrid-Kontos fest. In diesem Tutorial wird anschaulich beschrieben, wie Umgebungsvariablen festgelegt werden. Davon machen wir später noch Gebrauch.

Senden von E-Mails

Wir setzen an der Stelle an, an der der Blogpost meines Kollegen endet, und senden eine E-Mail. Wir sollten eine index.js-Datei haben, die in etwa so aussieht:

const sgMail = require('@sendgrid/mail');
sgMail.setApiKey(process.env.SENDGRID_API_KEY);
const msg = {
  to: 'test@example.com',
  from: 'test@example.com',
  subject: 'Sending with SendGrid is Fun',
  text: 'and easy to do anywhere, even with Node.js',
};
sgMail.send(msg).catch(err => {
  console.log(err);
});

Wir müssen sicherstellen, dass die Twilio SendGrid-Node-Bibliothek installiert ist. Falls das noch nicht der Fall ist, führen wir den folgenden Befehl in unserem Projektordner aus.

npm install @sendgrid/mail

Wir verwenden die Node-Dateisystem-API, um unsere Datei zu lesen und als base64-Zeichenfolge zu codieren. Ich habe die fiktive Datei attachment.pdf verwendet. Wir müssen also sicherstellen, dass wir den Namen der Datei durch ein Dokument ersetzen, das wir im selben Ordner wie die index.js-Datei gespeichert haben.

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

const fs = require("fs");

pathToAttachment = `${__dirname}/attachment.pdf`;
attachment = fs.readFileSync(pathToAttachment).toString("base64");

const msg = {
  to: 'test@example.com',
  from: 'test@example.com',
  subject: 'Sending with SendGrid is Fun',
  text: 'and easy to do anywhere, even with Node.js',
};
sgMail.send(msg).catch(err => {
  console.log(err);
});

Fügen wir nun unserem msg-Objekt eine Anhangeigenschaft hinzu. Wir können ein Array von Anhangobjekten übergeben, um schnell mehrere Anhänge zu senden, aber im Moment möchten wir nur eine einfache attachment.pdf senden.

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

const fs = require("fs");

pathToAttachment = `${__dirname}/attachment.pdf`;
attachment = fs.readFileSync(pathToAttachment).toString("base64");

const msg = {
  to: 'test@example.com',
  from: 'test@example.com',
  subject: 'Sending with SendGrid is Fun',
  text: 'and easy to do anywhere, even with Node.js',
  attachments: [
    {
      content: attachment,
      filename: "attachment.pdf",
      type: "application/pdf",
      disposition: "attachment"
    }
  ]
};

sgMail.send(msg).catch(err => {
  console.log(err);
});

Bevor wir diesen Code ausführen, müssen wir sicherstellen, dass wir die Umgebungsvariable SENDGRID_API_KEY festgelegt haben. Außerdem müssen wir noch den Wert to durch unsere eigene E-Mail-Adresse ersetzen, damit wir überprüfen können, ob unser Code auch ordnungsgemäß funktioniert.

Schließlich speichern wir unseren Code und führen im Terminal den folgenden Befehl aus, um eine E-Mail an uns selbst zu senden:

node index.js

Wenn wir jetzt in unserem Posteingang nachsehen, sollten wir in etwa Folgendes sehen.

Screenshot einer E-Mail mit Anhang

Zusammenfassung

Jetzt wissen wir, wie wir E-Mails mit Anhängen über Twilio SendGrid senden, aber die API bietet noch so viel mehr Möglichkeiten. Wir können auf eingehende E-Mails mit dem Parse-WebHook von SendGrid antworten, wir können SendGrid in einen intelligenten Facebook Messenger-Bot integrieren oder sogar eingehende E-Mails als Text weiterleiten. Außerdem enthält die Dokumentation zu SendGrid jede Menge weitere nützliche Funktionen und Verwendungen.

Ich freue mich immer über Fragen und würde gern erfahren, was du mit Twilio entwickelst. Ich bin gespannt.

  • Twitter: @ChatterboxCoder
  • Instagram: @ChatterboxCoder
  • E-Mail: nokenwa@twilio.com