如何使用 node.js 动态设置 aws ses TemplateData?

问题描述

我正在尝试发送包含自定义数据的电子邮件

async function sendEmailToSalesTeamOnBookingDemoClass(email,name,phoneNumber,utmSource,utmTerm,utmMedium,deviceType,browser,referrer) {
  try {
      let emailMe = "abc@gmail.com"
      const ses = new AWS.SES({ apiVersion: "2010-12-01" });
      const params = {
        Destination: {
          ToAddresses: [emailMe]
        },Source: senderEmail,Template: "Sales_Email_Demo",TemplateData : JSON.stringify({
          "name": name,"email": email,"phone": phoneNumber,"utmSource":utmSource,"utmTerm":utmTerm,"utmMedium":utmMedium,"browser":browser,"referrer":referrer,"deviceType":deviceType
       }),Tags: [                                       
          {
            Name: 'SomeName',Value: 'info'
          }
        ]
      };
      const sendEmailReceiver = ses.sendTemplatedEmail(params).promise();
      sendEmailReceiver
        .then(data => {
          console.log(senderEmail,emailMe)
          console.log("Email submitted to SES",data);
        })
        .catch(error => {
          console.log("Email not submitted to SES:" + error);
        });
  }
  catch (e) {
    console.error(`Error: ${e}`);
  }
}

回复邮件发送成功。

Email submitted to SES {
  ResponseMetadata: { RequestId: 'c08b9948-7be3-465d-a72c-fcca23f9f059' },MessageId: '010901793bd95a02-813072dc-bb87-4b65-91c4-03f7f29dcbd0-000000'
}

但是即使发件人电子邮件已经过验证和测试,也没有收到电子邮件。我的模板有问题吗?

        {
        "Template": {
          "TemplateName": "Sales_Email_Demo","SubjectPart": "some subject!","HtmlPart": "<html> <body><p>Hello,</p><p>Details:</p><p>Name:{{name}}</p><p>Phone Number: {{phoneNumber}}</p><p>Email Id: {{emailId}}</p><p>Source: {{utmSource}}</p><p>Medium: {{utmMedium}}</p><p>Term:{{utmTerm}}</p><p>Device:{{deviceType}}</p><p>browser:{{browser}}</p><p>Referrer: {{referrer}}</p></body></html>"
          }
        }

解决方法

我想通了。问题出在模板上。发送变量和接收变量的命名不同。