Help us improve the AWS re:Post Knowledge Center by sharing your feedback in a brief survey. Your input can influence how we create and update our content to better support your AWS journey.
Come posso inviare e-mail utilizzando Lambda e Amazon SES?
Desidero utilizzare AWS Lambda e Amazon Simple Email Service (Amazon SES) per inviare e-mail.
Breve descrizione
Per utilizzare Lambda e Amazon SES per inviare e-mail, completa questi passaggi:
- Crea una policy AWS Identity and Access Management (AWS IAM) e un ruolo di esecuzione per consentire a Lambda di eseguire la chiamata API.
- Verifica l'identità Amazon SES (dominio o indirizzo e-mail).
- Crea o aggiorna una funzione Lambda che includa la logica per inviare e-mail tramite Amazon SES.
Nota: per includere un allegato PDF nelle e-mail, devi utilizzare l'API SendRawEmail di Amazon SES.
Risoluzione
Crea una policy IAM e collegala a un ruolo per consentire a Lambda di eseguire la chiamata API
Completa i seguenti passaggi:
-
Apri la console IAM.
-
Utilizza l'editor di policy JSON per creare una policy IAM. Quando crei la policy, incolla il seguente documento di policy JSON nell'editor di policy:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ses:SendEmail", "ses:SendRawEmail" ], "Resource": "*" } ] }Nota: per ulteriori informazioni ed esempi sulla limitazione dell'accesso a questa policy, consulta Esempi di policy IAM per SES.
-
Associa la policy IAM a un ruolo IAM.
Verifica l'identità Amazon SES
Per verificare un dominio, consulta Verifica dell'identità di un dominio DKIM con il provider DNS.
Per verificare un indirizzo e-mail, consulta Verifica dell’identità di un indirizzo e-mail.
Crea o aggiorna una funzione Lambda che includa la logica per inviare e-mail
Nei seguenti esempi di codice di funzione Lambda Node.js, Python e Ruby, ove del caso, sostituisci queste variabili per il tuo ambiente:
- us-west-2 con la Regione AWS in cui si trova l'identità Amazon SES verificata.
- "RecipientEmailAddress", ... con l'indirizzo o gli indirizzi e-mail a cui desideri inviare l'e-mail.
- SourceEmailAddress con l'indirizzo e-mail verificato del mittente Amazon SES o con qualsiasi indirizzo e-mail di un dominio Amazon SES verificato. Facoltativamente, modifica il corpo del messaggio ("Test") e la riga dell'oggetto ("Test Email").
Nota: puoi anche progettare il codice funzione Lambda nei runtime supportati che preferisci.
Completa i seguenti passaggi:
-
Apri la console Lambda, quindi scegli Funzioni.
-
Se non l'hai ancora fatto, crea una funzione Lambda.
Nota: puoi utilizzare la console Lambda o creare e caricare un pacchetto di implementazione. -
Scegli il nome della funzione, quindi la scheda Configurazione.
-
Nel pannello Autorizzazioni, esamina il ruolo di esecuzione della funzione.
-
Verifica che sia presente il ruolo IAM con le autorizzazioni Amazon SES che hai creato in precedenza. Se il ruolo IAM corretto non è presente, assegna il ruolo corretto alla funzione.
-
Scegli la scheda Codice. Nell'editor di codice integrato, incolla uno dei seguenti esempi di codice funzione.
Esempio di codice Node.js versione 18 e successive:// Copyright 2019 Amazon.com, Inc. or its affiliates. All Rights Reserved. // SPDX-License-Identifier: Apache-2.0 import { SESClient, SendEmailCommand } from "@aws-sdk/client-ses"; const ses = new SESClient({ region: "us-west-2" }); export const handler = async(event) => { const command = new SendEmailCommand({ Destination: { ToAddresses: ["RecipientEmailAddress", ...], }, Message: { Body: { Text: { Data: "Test" }, }, Subject: { Data: "Test Email" }, }, Source: "SourceEmailAddress", }); try { let response = await ses.send(command); // process data. return response; } catch (error) { // error handling. } finally { // finally. } };Esempio di codice Node.js versione 16 e precedenti:
// Copyright 2019 Amazon.com, Inc. or its affiliates. All Rights Reserved. // SPDX-License-Identifier: Apache-2.0 var aws = require("aws-sdk"); var ses = new aws.SES({ region: "us-west-2" }); exports.handler = async function (event) { var params = { Destination: { ToAddresses: ["RecipientEmailAddress", ...], }, Message: { Body: { Text: { Data: "Test" }, }, Subject: { Data: "Test Email" }, }, Source: "SourceEmailAddress", }; return ses.sendEmail(params).promise() };Esempio di codice Python versione 3.9:
import json import boto3 client = boto3.client('ses', region_name='us-west-2') def lambda_handler(event, context): response = client.send_email( Destination={ 'ToAddresses': ['RecipientEmailAddress'] }, Message={ 'Body': { 'Text': { 'Charset': 'UTF-8', 'Data': 'This is the message body in text format.', } }, 'Subject': { 'Charset': 'UTF-8', 'Data': 'Test email', }, }, Source='SourceEmailAddress' ) print(response) return { 'statusCode': 200, 'body': json.dumps("Email Sent Successfully. MessageId is: " + response['MessageId']) }Esempio di codice Ruby versione 2.7:
require "aws-sdk-ses" $ses = Aws::SES::Client.new(region: "us-west-2") def lambda_handler(event:, context:) resp = $ses.send_email({ destination: { to_addresses: ["RecipientEmailAddress"], }, message: { body: { text: { charset: "UTF-8", data: "This is the message body in text format.", }, }, subject: { charset: "UTF-8", data: "Test email", }, }, source: "SourceEmailAddress" }) { statusCode: 200, body: JSON.generate("Message Sent Successfully. #{resp.to_h} ") } end -
Scegli Implementa.
(Facoltativo) Invia un'e-mail di prova
Completa i seguenti passaggi:
- Apri la console Lambda, quindi scegli la funzione.
- Configura un evento di test per la funzione.
Nota: il payload di test è indispensabile, ma non viene utilizzato per questo esempio di codice. - Scegli Esegui il test. Lambda utilizza Amazon SES per inviare l'e-mail di prova al destinatario.
Informazioni correlate
- Argomenti
- ServerlessCompute
- Tag
- AWS Lambda
- Lingua
- Italiano
Video correlati

