Senden von E-Mails mit Amazon SES - AWS SDK for JavaScript

Das AWS SDK for JavaScript V3-API-Referenzhandbuch beschreibt im Detail alle API-Operationen für die AWS SDK for JavaScript Version 3 (V3).

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Senden von E-Mails mit Amazon SES

JavaScript code example that applies to Node.js execution

Dieses Node.js-Codebeispiel zeigt:

  • das Senden einer Text- oder HTML-E-Mail.

  • das Senden von E-Mails, die auf einer E-Mail-Vorlage basieren.

  • das Senden von Massen-E-Mails, die auf einer E-Mail-Vorlage basieren.

Die Amazon SES-API bietet Ihnen zwei verschiedene Möglichkeiten, eine E-Mail zu senden, je nachdem, wie viel Kontrolle Sie über die Zusammensetzung der E-Mail-Nachricht haben möchten: formatiert und unformatiert. Weitere Informationen finden Sie unter Senden formatierter E-Mails mit der Amazon SES-API und Senden von Raw-E-Mails mit der Amazon SES-API.

Das Szenario

In diesem Beispiel verwenden Sie mehrere Node.js-Module, um E-Mails auf verschiedene Weisen zu senden. Die Node.js-Module verwenden das SDK für JavaScript , um E-Mail-Vorlagen mit diesen Methoden der SES Client-Klasse zu erstellen und zu verwenden:

Voraussetzungen für Aufgaben

Zum Einrichten und Ausführen dieses Beispiels müssen Sie zunächst diese Aufgaben abschließen:

  • Richten Sie die Projektumgebung ein, um diese TypeScript Knotenbeispiele auszuführen, und installieren Sie die erforderlichen Module AWS SDK for JavaScript und Module von Drittanbietern. Folgen Sie den Anweisungen unter GitHub.

Wichtig

Diese Beispiele veranschaulichen, wie Sie Client-Serviceobjekte und Befehle mit ECMAScript6 (ES6) importieren/exportieren.

  • Dies erfordert Node.js Version 13.x oder höher. Informationen zum Herunterladen und Installieren der neuesten Version von Node.js finden Sie unter Node.js-Downloads.

  • Informationen zur Verwendung der CommonJS-Syntax finden Sie unter JavaScript ES6/CommonJS-Syntax.

Anforderungen für das Senden von E-Mail-Nachrichten

Amazon SES erstellt eine E-Mail-Nachricht und stellt sie sofort zum Senden in die Warteschlange. Damit Sie mithilfe der SendEmailCommand-Methode E-Mails senden können, muss Ihre Nachricht die folgenden Anforderungen erfüllen:

  • Sie müssen die Nachricht von einer verifizierten E-Mail-Adresse oder Domäne senden. Wenn Sie versuchen, E-Mails über eine nicht verifizierte Adresse oder Domäne zu senden, führt die Operation zu einem "Email address not verified"-Fehler.

  • Wenn sich Ihr Konto noch in der Amazon SES Sandbox befindet, können Sie die E-Mails nur an verifizierte Adressen oder Domänen oder E-Mail-Adressen des Amazon SES-Postfachsimulators senden. Weitere Informationen finden Sie unter Verifizieren von E-Mail-Adressen und Domänen im Amazon Simple Email Service-Entwicklerhandbuch.

  • Die Gesamtgröße der Nachricht, einschließlich Anlagen, muss kleiner als 10 MB sein.

  • Die Nachricht muss mindestens eine E-Mail-Adresse für einen Empfänger enthalten. Bei der Empfänger-Adresse kann es sich um eine Empfängeradresse, eine CC: Adresse oder BCC: Adresse handeln. Wenn eine Empfänger-E-Mail-Adresse nicht gültig ist (d. h. sie hat nicht das Format UserName@[SubDomain.]Domain.TopLevelDomain), wird die gesamte Nachricht abgelehnt, auch wenn die Nachricht andere gültige Empfänger enthält.

  • Die Nachricht darf nicht mehr als 50 Empfänger in den Feldern An:, CC: und BCC: enthalten. Wenn Sie eine E-Mail an eine größere Zielgruppe senden möchten, können Sie Ihre Empfängerliste in Gruppen von höchstens 50 unterteilen und dann die sendEmail-Methode aufrufen, um die Nachricht mehrmals an die einzelnen Gruppen zu senden.

Senden einer E-Mail

In diesem Beispiel verwenden Sie ein Node.js-Modul zum Senden von E-Mail mit Amazon SES.

Erstellen Sie ein libs Verzeichnis und ein Node.js-Modul mit dem Dateinamen sesClient.js. Kopieren Sie den folgenden Code und fügen Sie ihn ein, wodurch das Amazon SES-Clientobjekt erstellt wird. Ersetzen Sie REGION durch Ihre AWS Region.

import { SESClient } from "@aws-sdk/client-ses"; // Set the AWS Region. const REGION = "us-east-1"; // Create SES service object. const sesClient = new SESClient({ region: REGION }); export { sesClient };

Dieser Beispielcode finden Sie hier unter GitHub.

Erstellen Sie ein Node.js-Modul mit dem Dateinamen ses_sendemail.js. Konfigurieren Sie das SDK wie zuvor gezeigt, einschließlich der Installation der erforderlichen Clients und Pakete.

Erstellen Sie ein Objekt, um die Parameterwerte, die die zu sendende E-Mail definieren, einschließlich Absender- und Empfängeradressen, Betreff und E-Mail-Text in Klartext- und HTML-Formaten an die SendEmailCommand Methode der SES Client-Klasse zu übergeben. Um die SendEmailCommand Methode aufzurufen, rufen Sie ein Amazon SES-Serviceobjekt auf und übergeben Sie die Parameter.

Anmerkung

In diesem Beispiel werden die erforderlichen AWS Service-V3-Paketclients und V3-Befehle importiert und verwendet und die -sendMethode wird in einem Async/Await-Muster verwendet. Sie können dieses Beispiel stattdessen mit V2-Befehlen erstellen, indem Sie einige kleinere Änderungen vornehmen. Details hierzu finden Sie unter Verwenden von V3-Befehlen.

Anmerkung

Ersetzen Sie RECEIVER_ADDRESS durch die Adresse, an die die E-Mail gesendet werden soll, und BolDER_ADDRESS durch die E-Mail-Adresse, von der die E-Mail gesendet werden soll.

import { SendEmailCommand } from "@aws-sdk/client-ses"; import { sesClient } from "./libs/sesClient.js"; const createSendEmailCommand = (toAddress, fromAddress) => { return new SendEmailCommand({ Destination: { /* required */ CcAddresses: [ /* more items */ ], ToAddresses: [ toAddress, /* more To-email addresses */ ], }, Message: { /* required */ Body: { /* required */ Html: { Charset: "UTF-8", Data: "HTML_FORMAT_BODY", }, Text: { Charset: "UTF-8", Data: "TEXT_FORMAT_BODY", }, }, Subject: { Charset: "UTF-8", Data: "EMAIL_SUBJECT", }, }, Source: fromAddress, ReplyToAddresses: [ /* more items */ ], }); }; const run = async () => { const sendEmailCommand = createSendEmailCommand( "recipient@example.com", "sender@example.com", ); try { return await sesClient.send(sendEmailCommand); } catch (e) { console.error("Failed to send email."); return e; } };

Um das Beispiel auszuführen, geben Sie Folgendes an der Eingabeaufforderung ein. Die E-Mail wird für den Versand durch Amazon SES in die Warteschlange gestellt.

node ses_sendemail.js

Dieser Beispielcode finden Sie hier unter GitHub.

Senden einer E-Mail mit einer Vorlage

In diesem Beispiel verwenden Sie ein Node.js-Modul zum Senden von E-Mail mit Amazon SES. Erstellen Sie ein Node.js-Modul mit dem Dateinamen ses_sendtemplatedemail.js. Konfigurieren Sie das SDK wie zuvor gezeigt, einschließlich der Installation der erforderlichen Clients und Pakete.

Erstellen Sie ein Objekt, um die Parameterwerte, die die zu sendende E-Mail definieren, z. B. die Sender- und Empfängeradressen, Betreff, E-Mail-Text im Klartext- und HTML-Format, an die SendTemplatedEmailCommand-Methode der SES-Client-Klasse zu übergeben. Um die SendTemplatedEmailCommand Methode aufzurufen, rufen Sie ein Amazon SES-Client-Serviceobjekt auf und übergeben Sie die Parameter.

Anmerkung

In diesem Beispiel werden die erforderlichen AWS Service-V3-Paketclients und V3-Befehle importiert und verwendet und die -sendMethode in einem Async/Await-Muster verwendet. Sie können dieses Beispiel stattdessen mit V2-Befehlen erstellen, indem Sie einige kleinere Änderungen vornehmen. Details hierzu finden Sie unter Verwenden von V3-Befehlen.

Anmerkung

Ersetzen Sie REGION durch Ihre AWS Region, RECEIVER_ADDRESS durch die Adresse, an die die E-Mail gesendet werden soll, SpeedDER_ADDRESS durch die E-Mail-Adresse, von der die E-Mail gesendet werden soll, und TEMPLATE_NAME durch den Namen der Vorlage.

import { SendTemplatedEmailCommand } from "@aws-sdk/client-ses"; import { getUniqueName, postfix, } from "@aws-doc-sdk-examples/lib/utils/util-string.js"; import { sesClient } from "./libs/sesClient.js"; /** * Replace this with the name of an existing template. */ const TEMPLATE_NAME = getUniqueName("ReminderTemplate"); /** * Replace these with existing verified emails. */ const VERIFIED_EMAIL = postfix(getUniqueName("Bilbo"), "@example.com"); const USER = { firstName: "Bilbo", emailAddress: VERIFIED_EMAIL }; /** * * @param { { emailAddress: string, firstName: string } } user * @param { string } templateName - The name of an existing template in Amazon SES. * @returns { SendTemplatedEmailCommand } */ const createReminderEmailCommand = (user, templateName) => { return new SendTemplatedEmailCommand({ /** * Here's an example of how a template would be replaced with user data: * Template: <h1>Hello {{contact.firstName}},</h1><p>Don't forget about the party gifts!</p> * Destination: <h1>Hello Bilbo,</h1><p>Don't forget about the party gifts!</p> */ Destination: { ToAddresses: [user.emailAddress] }, TemplateData: JSON.stringify({ contact: { firstName: user.firstName } }), Source: VERIFIED_EMAIL, Template: templateName, }); }; const run = async () => { const sendReminderEmailCommand = createReminderEmailCommand( USER, TEMPLATE_NAME, ); try { return await sesClient.send(sendReminderEmailCommand); } catch (err) { console.log("Failed to send template email", err); return err; } };

Um das Beispiel auszuführen, geben Sie Folgendes an der Eingabeaufforderung ein. Die E-Mail wird für den Versand durch Amazon SES in die Warteschlange gestellt.

node ses_sendtemplatedemail.js

Dieser Beispielcode finden Sie hier unter GitHub.

Senden von Massen-E-Mails mit einer Vorlage

In diesem Beispiel verwenden Sie ein Node.js-Modul zum Senden von E-Mail mit Amazon SES.

Erstellen Sie ein libs Verzeichnis und ein Node.js-Modul mit dem Dateinamen sesClient.js. Kopieren Sie den folgenden Code und fügen Sie ihn ein, wodurch das Amazon SES-Clientobjekt erstellt wird. Ersetzen Sie REGION durch Ihre AWS Region.

import { SESClient } from "@aws-sdk/client-ses"; // Set the AWS Region. const REGION = "us-east-1"; // Create SES service object. const sesClient = new SESClient({ region: REGION }); export { sesClient };

Dieser Beispielcode finden Sie hier unter GitHub.

Erstellen Sie ein Node.js-Modul mit dem Dateinamen ses_sendbulktemplatedemail.js. Konfigurieren Sie das SDK wie zuvor gezeigt, einschließlich der Installation der erforderlichen Clients und Pakete.

Erstellen Sie ein Objekt, um die Parameterwerte, die die zu sendende E-Mail definieren, einschließlich Absender- und Empfängeradressen, Betreff und E-Mail-Text in Klartext- und HTML-Formaten an die SendBulkTemplatedEmailCommand Methode der SES Client-Klasse zu übergeben. Um die SendBulkTemplatedEmailCommand Methode aufzurufen, rufen Sie ein Amazon SES-Serviceobjekt auf und übergeben Sie die Parameter.

Anmerkung

In diesem Beispiel werden die erforderlichen AWS Service-V3-Paketclients und V3-Befehle importiert und verwendet und die -sendMethode in einem Async/Await-Muster verwendet. Sie können dieses Beispiel stattdessen mit V2-Befehlen erstellen, indem Sie einige kleinere Änderungen vornehmen. Details hierzu finden Sie unter Verwenden von V3-Befehlen.

Anmerkung

Ersetzen Sie RECEIVER_ADDRESSES durch die Adresse, an die die E-Mail gesendet werden soll, und BolDER_ADDRESS durch die E-Mail-Adresse, von der die E-Mail gesendet werden soll.

import { SendBulkTemplatedEmailCommand } from "@aws-sdk/client-ses"; import { getUniqueName, postfix, } from "@aws-doc-sdk-examples/lib/utils/util-string.js"; import { sesClient } from "./libs/sesClient.js"; /** * Replace this with the name of an existing template. */ const TEMPLATE_NAME = getUniqueName("ReminderTemplate"); /** * Replace these with existing verified emails. */ const VERIFIED_EMAIL_1 = postfix(getUniqueName("Bilbo"), "@example.com"); const VERIFIED_EMAIL_2 = postfix(getUniqueName("Frodo"), "@example.com"); const USERS = [ { firstName: "Bilbo", emailAddress: VERIFIED_EMAIL_1 }, { firstName: "Frodo", emailAddress: VERIFIED_EMAIL_2 }, ]; /** * * @param { { emailAddress: string, firstName: string }[] } users * @param { string } templateName the name of an existing template in SES * @returns { SendBulkTemplatedEmailCommand } */ const createBulkReminderEmailCommand = (users, templateName) => { return new SendBulkTemplatedEmailCommand({ /** * Each 'Destination' uses a corresponding set of replacement data. We can map each user * to a 'Destination' and provide user specific replacement data to create personalized emails. * * Here's an example of how a template would be replaced with user data: * Template: <h1>Hello {{name}},</h1><p>Don't forget about the party gifts!</p> * Destination 1: <h1>Hello Bilbo,</h1><p>Don't forget about the party gifts!</p> * Destination 2: <h1>Hello Frodo,</h1><p>Don't forget about the party gifts!</p> */ Destinations: users.map((user) => ({ Destination: { ToAddresses: [user.emailAddress] }, ReplacementTemplateData: JSON.stringify({ name: user.firstName }), })), DefaultTemplateData: JSON.stringify({ name: "Shireling" }), Source: VERIFIED_EMAIL_1, Template: templateName, }); }; const run = async () => { const sendBulkTemplateEmailCommand = createBulkReminderEmailCommand( USERS, TEMPLATE_NAME, ); try { return await sesClient.send(sendBulkTemplateEmailCommand); } catch (err) { console.log("Failed to send bulk template email", err); return err; } };

Um das Beispiel auszuführen, geben Sie Folgendes an der Eingabeaufforderung ein. Die E-Mail wird für den Versand durch Amazon SES in die Warteschlange gestellt.

node ses_sendbulktemplatedemail.js

Dieser Beispielcode finden Sie hier unter GitHub.