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
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
Ciò richiede la versione 13.x o successiva di Node.js. Per scaricare e installare la versione più recente di Node.js, consulta Node.js downloads
. . Se preferisci usare la sintassi CommonJS, vedi. JavaScript Sintassi ES6/CommonJS
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 formato
UserName@[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
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
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