如何解决发送电子邮件后如何检查
我正在使用AWS的SES服务发送电子邮件。
我使用Python和boto3。 (https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/ses.html#SES.Client.send_email)
我知道如何检查整体统计信息。 (https://aws.amazon.com/ko/premiumsupport/knowledge-center/ses-email-opens-clicks/)
但是我不知道如何进行个人询问。
发送电子邮件后,将返回message_id
和request_id
。
我认为我们将使用message_id
,request_id
进行搜索。
我不知道该怎么办。
解决方法
- Configure SES发送通知(发送,传递,退回,打开)到SNS主题。
- 编写Lambda函数以收听SNS主题。收到通知后,将事件写入您的表中(我使用DynamoDB)
- 现在您将所有电子邮件事件都放在一个表中
这是我用来将SES事件写入DynamoDB的Lambda函数
const tableName = "DEV_EmailAuditLogs";
const AWS = require("aws-sdk");
AWS.config.update({ region: "us-east-1" });
const dynamodb = new AWS.DynamoDB({ apiVersion: "2012-10-08" });
exports.handler = (event,context,callback) => {
console.log(JSON.stringify(event,null,2));
console.log("From SNS:",event.Records[0].Sns.Message);
console.log("Arn Topic:",event.Records[0].Sns.TopicArn);
const json = event.Records[0].Sns.Message;
const parsed = JSON.parse(json);
const type = parsed.eventType;
const sent = parsed.mail.timestamp.slice(0,-1);
let to,subject,from;
const headers = parsed.mail.headers;
for (const h of headers) {
switch (h.name) {
case "To":
to = h.value;
break;
case "From":
from = h.value;
break;
case "Subject":
subject = h.value;
break;
}
}
const eventData = parsed[type.toLowerCase()];
let created;
if (eventData && eventData.timestamp) {
created = eventData.timestamp.slice(0,-1);
} else {
created = sent;
}
var params = {
TableName: tableName,Item: {
to: { S: to },from: { S: from },created: { S: created },sent: { S: sent },type: { S: type },version: { N: "1" }
}
};
if (subject){
params.Item.subject = { S: subject };
}
dynamodb.putItem(params,function(err,data) {
if (err) {
console.log(err);
} else {
console.log(data);
}
});
};
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。