Comment puis-je envoyer un e-mail à l'aide de Lambda et d'Amazon SES ?
Je souhaite envoyer des e-mails à l'aide d'AWS Lambda et d'Amazon Simple Email Service (Amazon SES).
Brève description
Pour envoyer des e-mails à l’aide de Lambda et d’Amazon SES, procédez comme suit :
- Créez une politique de Gestion des identités et des accès AWS (AWS IAM) et un rôle d'exécution afin que Lambda exécute l'appel d'API.
- Vérifiez votre identité Amazon SES (domaine ou adresse e-mail).
- Créer ou mettre à jour une fonction Lambda qui inclut une logique d'envoi d'e-mails via Amazon SES
Remarque : Pour inclure une pièce jointe au format PDF dans vos e-mails, vous devez utiliser l'API SendRawEmail d’Amazon SES.
Résolution
Créer une politique IAM et l’associer à un rôle afin que Lambda exécute l'appel d'API
Procédez comme suit :
-
Ouvrez la console IAM.
-
Utilisez l'éditeur de stratégie JSON pour créer une politique IAM. Lorsque vous créez la politique, collez le document de politique JSON suivant dans l'éditeur de politique :
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ses:SendEmail", "ses:SendRawEmail" ], "Resource": "*" } ] }Remarque : Pour plus d'informations et des exemples sur la manière de restreindre l'accès à cette politique, consultez la section Exemples de politiques IAM pour SES.
-
Associez la politique IAM à un rôle IAM.
Vérifier votre identité Amazon SES
Pour vérifier un domaine, consultez la section Vérification de l'identité d'un domaine DKIM auprès de votre fournisseur DNS.
Pour vérifier une adresse e-mail, consultez la section Vérification de l'identité d'une adresse e-mail.
Créer ou mettre à jour une fonction Lambda qui inclut une logique d’envoi d’e-mails
Dans les exemples de code de fonction Lambda Node.js, Python et Ruby, si nécessaire, remplacez ces variables pour votre environnement :
- us-west-2 par la région AWS dans laquelle se trouve votre identité Amazon SES vérifiée.
- « RecipientEmailAddress »,... par l'adresse e-mail ou les adresses auxquelles vous souhaitez envoyer l'e-mail.
- SourceEmailAddress par votre adresse e-mail d'expéditeur vérifiée par Amazon SES ou par toute adresse e-mail provenant d'un domaine vérifié par Amazon SES. Vous pouvez éventuellement modifier le corps du message («Test») et la ligne d'objet («Test Email»).
Remarque : Vous pouvez également concevoir votre propre code de fonction Lambda dans vos environnements d'exécution pris en charge préférés.
Procédez comme suit :
-
Ouvrez la console Lambda, puis sélectionnez Fonctions.
-
Si cela n'est pas déjà fait, créez une fonction Lambda.
Remarque : Vous pouvez utiliser la console Lambda ou créer et charger un package de déploiement. -
Choisissez le nom de votre fonction, puis choisissez l'onglet Configuration.
-
Dans le volet Autorisations, examinez le rôle d'exécution de la fonction.
-
Vérifiez que le rôle IAM doté des autorisations Amazon SES que vous avez créé précédemment est répertorié. Si le rôle IAM correct n'est pas répertorié, attribuez-le à la fonction.
-
Sélectionnez l’onglet Code. Dans l'éditeur de code intégré, collez l'un des exemples de code de fonction suivants.
Exemple de code Node.js versions 18 et ultérieures :// 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. } };Exemple de code Node.js versions 16 et antérieures :
// 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() };Exemple de code Python version 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']) }Exemple de code Ruby version 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 -
Sélectionnez Déployer.
(Facultatif) Envoyer un e-mail de test
Procédez comme suit :
- Ouvrez la console Lambda, puis choisissez votre fonction.
- Configurez un événement de test pour votre fonction.
Remarque : Les données utiles de test sont requises mais ne sont pas utilisées pour cet exemple de code. - Sélectionnez Tester. Lambda utilise Amazon SES pour envoyer l'e-mail de test à votre destinataire.
Informations connexes
- Sujets
- ServerlessCompute
- Balises
- AWS Lambda
- Langue
- Français
Vidéos associées


Contenus pertinents
- demandé il y a un an
- demandé il y a 2 ans
- demandé il y a 2 ans
AWS OFFICIELA mis à jour il y a 3 mois
AWS OFFICIELA mis à jour il y a 3 mois