Invio di e-mail tramite Amazon SES - AWS SDK for JavaScript

La Guida API di riferimento AWS SDK for JavaScript V3 descrive in dettaglio tutte le API operazioni per la AWS SDK for JavaScript versione 3 (V3).

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Invio di e-mail tramite Amazon SES

JavaScript code example that applies to Node.js execution

Questo esempio di codice di Node.js illustra:

  • Invia un SMS o HTML un'e-mail.

  • Come inviare e-mail in base a un modello di e-mail.

  • Come inviare e-mail in blocco in base a un modello di e-mail.

Amazon SES API offre due modi diversi per inviare un'e-mail, a seconda del livello di controllo che desideri sulla composizione del messaggio e-mail: formattato e non elaborato. Per maggiori dettagli, consulta Invio di e-mail formattate tramite Amazon SES API e Invio di e-mail non elaborate tramite Amazon SES API.

Lo scenario

In questo esempio, utilizzi una serie di moduli Node.js per inviare e-mail in diversi modi. I moduli Node.js utilizzano SDK for per JavaScript creare e utilizzare modelli di posta elettronica utilizzando questi metodi della classe SES client:

Attività prerequisite

Per configurare ed eseguire questo esempio, è necessario completare queste attività:

  • Configura l'ambiente di progetto per eseguire questi TypeScript esempi di Node e installa i moduli richiesti AWS SDK for JavaScript e di terze parti. Segui le istruzioni su GitHub.

  • Creazione di un file di configurazione condiviso con le credenziali utente. Per ulteriori informazioni sulla fornitura di un file di credenziali condiviso, consulta File di configurazione e credenziali condivisi nella Guida di riferimento agli strumenti AWS SDKs e agli strumenti.

Importante

Questi esempi mostrano come importare/esportare oggetti e comandi del servizio client utilizzando (). ECMAScript6 ES6

Requisiti per l'invio di messaggi e-mail

Amazon SES compone un messaggio e-mail e lo mette immediatamente in coda per l'invio. Per inviare e-mail utilizzando il metodo SendEmailCommand, il messaggio deve soddisfare i seguenti requisiti:

  • Devi inviare il messaggio da un dominio o da un indirizzo e-mail verificato. Se tenti di inviare e-mail utilizzando un dominio o un indirizzo non verificato, l'operazione genera un errore "Email address not verified".

  • Se il tuo account è ancora nella SES sandbox di Amazon, puoi inviare messaggi solo a indirizzi o domini verificati o a indirizzi e-mail associati ad Amazon SES Mailbox Simulator. Per ulteriori informazioni, consulta la sezione Verifica degli indirizzi e-mail e dei domini nella Amazon Simple Email Service Developer Guide.

  • La dimensione totale del messaggio, inclusi gli allegati, deve essere inferiore a 10 MB.

  • Il messaggio deve includere almeno l'indirizzo e-mail di un destinatario. L'indirizzo del destinatario può essere un indirizzo To:, un indirizzo CC: o un indirizzoBCC:. Se l'indirizzo e-mail del destinatario non è valido (ovvero non è nel formatoUserName@[SubDomain.]Domain.TopLevelDomain), l'intero messaggio viene rifiutato, anche se contiene altri destinatari validi.

  • Il messaggio non può includere più di 50 destinatari nei campi To:, CC: eBCC:. Se devi inviare un messaggio e-mail a un pubblico più ampio, puoi dividere l'elenco dei destinatari in gruppi di massimo 50 persone e quindi chiamare il metodo sendEmail più volte per inviare il messaggio a ciascun gruppo.

Invio di un'e-mail

In questo esempio, usa un modulo Node.js per inviare e-mail con AmazonSES.

Crea una libs directory e crea un modulo Node.js con il nome del filesesClient.js. Copia e incolla il codice seguente, che crea l'oggetto SES client Amazon. Replace (Sostituisci) REGION con la tua AWS regione.

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 };

Questo codice di esempio può essere trovato qui su GitHub.

Crea un modulo Node.js con il nome del file ses_sendemail.js. Configura SDK come mostrato in precedenza, inclusa l'installazione dei client e dei pacchetti richiesti.

Create un oggetto per passare i valori dei parametri che definiscono l'e-mail da inviare, inclusi gli indirizzi del mittente e del destinatario, l'oggetto e il corpo dell'e-mail in testo e HTML formati semplici, al SendEmailCommand metodo della classe SES client. Per chiamare il SendEmailCommand metodo, richiama un oggetto di SES servizio Amazon, passando i parametri.

Nota

Questo esempio importa e utilizza i client del pacchetto AWS Service V3 richiesti, i comandi V3 e utilizza il send metodo in uno schema async/await. È possibile creare questo esempio utilizzando i comandi V2 invece apportando alcune modifiche minori. Per informazioni dettagliate, vedi Utilizzo dei comandi v3.

Nota

Replace (Sostituisci) toAddress con l'indirizzo a cui inviare l'e-mail e fromAddress con l'indirizzo e-mail da cui inviare l'e-mail.

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 (caught) { if (caught instanceof Error && caught.name === "MessageRejected") { /** @type { import('@aws-sdk/client-ses').MessageRejected} */ const messageRejectedError = caught; return messageRejectedError; } throw caught; } };

Per eseguire l'esempio, immettere quanto segue al prompt dei comandi. L'e-mail è in coda per l'invio da parte di Amazon. SES

node ses_sendemail.js

Questo codice di esempio può essere trovato qui su. GitHub

Invio di un'e-mail utilizzando un modello

In questo esempio, usa un modulo Node.js per inviare e-mail con AmazonSES. Crea un modulo Node.js con il nome del file ses_sendtemplatedemail.js. Configura SDK come mostrato in precedenza, inclusa l'installazione dei client e dei pacchetti richiesti.

Create un oggetto per passare i valori dei parametri che definiscono l'e-mail da inviare, inclusi gli indirizzi del mittente e del destinatario, l'oggetto, il corpo dell'e-mail in testo semplice e i HTML formati, al SendTemplatedEmailCommand metodo della classe SES client. Per chiamare il SendTemplatedEmailCommand metodo, richiama un oggetto SES del servizio client Amazon, passando i parametri.

Nota

Questo esempio importa e utilizza i client del pacchetto AWS Service V3 richiesti, i comandi V3 e utilizza il send metodo in uno schema async/await. È possibile creare questo esempio utilizzando i comandi V2 invece apportando alcune modifiche minori. Per informazioni dettagliate, vedi Utilizzo dei comandi v3.

Nota

Replace (Sostituisci) REGION con la tua AWS regione, USER con il nome e l'indirizzo e-mail a cui inviare l'e-mail, VERIFIED_EMAIL con l'indirizzo e-mail da cui inviare l'e-mail, e TEMPLATE_NAME con il nome del modello.

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 (caught) { if (caught instanceof Error && caught.name === "MessageRejected") { /** @type { import('@aws-sdk/client-ses').MessageRejected} */ const messageRejectedError = caught; return messageRejectedError; } throw caught; } };

Per eseguire l'esempio, immettere quanto segue al prompt dei comandi. L'e-mail è in coda per l'invio da parte di Amazon. SES

node ses_sendtemplatedemail.js

Questo codice di esempio può essere trovato qui su. GitHub

Invio di e-mail in blocco utilizzando un modello

In questo esempio, usa un modulo Node.js per inviare e-mail con AmazonSES.

Crea una libs directory e crea un modulo Node.js con il nome del filesesClient.js. Copia e incolla il codice seguente, che crea l'oggetto SES client Amazon. Replace (Sostituisci) REGION con la tua AWS regione.

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 };

Questo codice di esempio può essere trovato qui su GitHub.

Crea un modulo Node.js con il nome del file ses_sendbulktemplatedemail.js. Configura SDK come mostrato in precedenza, inclusa l'installazione dei client e dei pacchetti richiesti.

Create un oggetto per passare i valori dei parametri che definiscono l'e-mail da inviare, inclusi gli indirizzi del mittente e del destinatario, l'oggetto e il corpo dell'e-mail in testo e HTML formati semplici, al SendBulkTemplatedEmailCommand metodo della classe SES client. Per chiamare il SendBulkTemplatedEmailCommand metodo, richiama un oggetto di SES servizio Amazon, passando i parametri.

Nota

Questo esempio importa e utilizza i client del pacchetto AWS Service V3 richiesti, i comandi V3 e utilizza il send metodo in uno schema async/await. È possibile creare questo esempio utilizzando i comandi V2 invece apportando alcune modifiche minori. Per informazioni dettagliate, vedi Utilizzo dei comandi v3.

Nota

Replace (Sostituisci) USERS con i nomi e gli indirizzi e-mail a cui inviare l'e-mail, VERIFIED_EMAIL_1 con l'indirizzo e-mail da cui inviare l'e-mail, e TEMPLATE_NAME con il nome del modello.

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 (caught) { if (caught instanceof Error && caught.name === "MessageRejected") { /** @type { import('@aws-sdk/client-ses').MessageRejected} */ const messageRejectedError = caught; return messageRejectedError; } throw caught; } };

Per eseguire l'esempio, immettere quanto segue al prompt dei comandi. L'e-mail è in coda per l'invio da parte di Amazon. SES

node ses_sendbulktemplatedemail.js

Questo codice di esempio può essere trovato qui su. GitHub