如何使用 Lambda 和 Amazon SES 傳送電子郵件?

上次更新日期:2021 年 9 月 15 日

我想要使用 AWS Lambda 透過 Amazon Simple Email Service (Amazon SES) 傳送電子郵件。如何進行該設定?

簡短描述

若要使用 Amazon SES 透過 Lambda 函數傳送電子郵件,請進行以下設定:

1.    為 Lambda 建立 AWS Identity and Access Management (IAM) 政策和執行角色,以執行 API 呼叫。

2.    驗證您的 Amazon SES 身分 (網域或電子郵件地址)。

3.    建立或更新 Lambda 函數,其中包含透過 Amazon SES 傳送電子郵件的邏輯。

注意:若要在電子郵件中包含 PDF 附件,您必須使用 Amazon SES SendRawEmail API 操作。如需詳細資訊,請參閱 使用 Amazon SES API 傳送原始電子郵件

解決方案

注意:本文範例 Node.js Lambda 函數程式碼按原樣提供。根據您的使用案例調整範例,或使用您的偏好程式設計語言設計您自己的範例。

為 Lambda 建立 IAM 政策和執行角色以執行 API 呼叫

1.    使用 JSON 政策編輯器建立 IAM 政策。當您建立政策時,複製以下 JSON 政策文件並將其貼至政策編輯器:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ses:SendEmail",
                "ses:SendRawEmail"
            ],
            "Resource": "*"
        }
    ]
}

注意:如需詳細資訊和如何限制此政策存取的範例,請參閱 Amazon SES 的範例 IAM 政策

2.    附加 IAM 政策到 IAM 角色。如需指示,請參閱新增 IAM 身分許可 (主控台) 中的若要使用受管政策作為身分的許可政策 (主控台) 一節。

注意:您要依照下列步驟將此 IAM 角色指派給您的 Lambda 函數。

驗證您的 Amazon SES 身分 (網域或電子郵件地址)

若要驗證網域,請參閱在 Amazon SES 中驗證網域

若要驗證電子郵件地址,請參閱在 Amazon SES 中驗證電子郵件地址

建立或更新 Lambda 函數,其中包含透過 Amazon SES 傳送電子郵件的邏輯

1.    如果您還沒有這樣做,請建立 Lambda 函數

注意:您可以藉由使用 Lambda 主控台或透過建置和上傳部署套件,來建立 Lambda 函數。

2.    在 Lambda 主控台的左側導覽窗格中,選擇 Functions (函數)。

3.    選擇函數的名稱。

4.    在 Configuration (組態) 標籤上的 Permissions (許可) 窗格中,查看函數的 Execution Role (執行角色)。確認已列出您先前所建立具有 Amazon SES 許可的 IAM 角色。如果未列出正確的 IAM 角色,請將正確的角色指派給函數。

5.    在 Function code (函數程式碼) 下的 editor pane (編輯器窗格) 中,貼上以下範例函數程式碼:

重要:us-west-2 取代為經驗證 Amazon SES 身分所在的 AWS 區域。將 "RecipientEmailAddress", ... 取代為您要傳送電子郵件的目標電子郵件地址。將 SourceEmailAddress 取代為經過 Amazon SES 驗證的寄件者電子郵件地址,或經過 Amazon SES 驗證的網域中的任何電子郵件地址。或者,編輯訊息正文 (「測試」) 和主旨行 (「測試電子郵件」)。

// 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()
};

如需有關使用 sendEmail API 的詳細資訊,請參閱適用於 JavaScript 的 AWS 開發套件文件

5.    選擇 Deploy (部署)。

(選擇性) 傳送測試電子郵件

1.    在 Lambda console (Lambda 主控台) 中,為您的函數設定測試事件

注意:測試酬載為必要項目,但不用於此程式碼範例。

2.    選擇 Test (測試)。Lambda 會使用 Amazon SES 將測試電子郵件傳送給您的收件人。


此文章是否有幫助?


您是否需要帳單或技術支援?