问题描述
我使用 AWS SES 开发工具包以 JavaScript 发送电子邮件。我会让用户调用这个函数,他们需要知道他们的电子邮件是否成功发送。这是我当前的代码:
var aws = require("aws-sdk");
let credentials = aws.config.credentials;
aws.config.update({
region: "us-east-1",});
// Specify a configuration set.
const configuration_set = "test";
const ses = new aws.SES();
var to = ['bounce@simulator.amazonses.com']
var from = 'tester@gmail.com'
const params = {
Source: from,Destination: { ToAddresses: to },Message: {
Subject: {
Data: "Sending emails through SES"
},Body: {
Text: {
Data: 'Hello world www.google.ca',}
}
},ConfigurationSetName: configuration_set
};
ses.sendEmail(params,function (err,data) {
if (err) throw err
console.log(data)
//Do something here to check if email was delivered successfully
})
控制台返回的数据是一个RequestId和一个MessageId。我已经研究过是否可以使用 MessageId 检查电子邮件的传递状态,但似乎并非如此。有没有其他方法可以让调用此函数的人知道他们的电子邮件是否已成功发送或退回/未发送。
解决方法
由此代码生成的消息 ID 只会告诉您 SES 已接受该电子邮件,并将尝试将其发送到目的地。当 ses 将消息传递给收件人时,相同的消息 Id 将作为标题插入,这不会告诉您它是否已传递,您需要在已验证身份的 ses 上启用关于传递、投诉、退回的通知。 SES 提供了一个选项,可以通过两种方式通知它,即向 sns 订阅者或返回路径地址。