Receiving/Reading 来自 SES 的电子邮件
Receiving/Reading Emails From SES
我正在尝试设置 AWS SES
,但我在使用 reading/receiving 电子邮件时遇到问题。最后,我希望能够使用 Outlook 或其他一些移动客户端应用程序来查看电子邮件 sent/received 通过 SES 验证的地址。
我已经成功验证了我的域和电子邮件地址。此外,我还设置了一个已读回执,可以将任何收到的电子邮件从 SES 转发到 S3 存储桶,但我不确定如何使用 IMAP/POP3 提取这些电子邮件。
我是否需要创建自己的电子邮件服务器仍然与 lambda
功能结合使用以将收到的电子邮件转发到该服务器,以便我可以使用客户端应用程序提取这些电子邮件。有没有办法使用 IMAP/POP3 直接连接到 SES?最后,我是否需要设置整个电子邮件堆栈,或者是否有一个简化的(最好是 NodeJS)邮件服务器,它可以只将电子邮件推送到客户端。
谢谢,
目前 IMAP/POP3 不支持 SES。我有类似的要求,在评估了几种方法后,我使用 Lambda 将电子邮件转发到我的网络邮件。
您可以使用以下 Lambda 代码转发转发到 SNS 主题的电子邮件。
var AWS = require('aws-sdk');
var forwardFrom = process.env.from_address;
var forwardTo = process.env.to_address;
exports.handler = function(event, context) {
var msgInfo = JSON.parse(event.Records[0].Sns.Message);
// don't process spam messages
if (msgInfo.receipt.spamVerdict.status === 'FAIL' || msgInfo.receipt.virusVerdict.status === 'FAIL') {
console.log('Message is spam or contains virus, ignoring.');
context.succeed();
}
var email = msgInfo.content,
headers = "From: " + forwardFrom + "\r\n";
headers += "Reply-To: " + msgInfo.mail.commonHeaders.from[0] + "\r\n";
headers += "X-Original-To: " + msgInfo.mail.commonHeaders.to[0] + "\r\n";
headers += "To: " + forwardTo + "\r\n";
headers += "Subject: Fwd: " + msgInfo.mail.commonHeaders.subject + "\r\n";
if (email) {
var res;
res = email.match(/Content-Type:.+\s*boundary.*/);
if (res) {
headers += res[0] + "\r\n";
} else {
res = email.match(/^Content-Type:(.*)/m);
if (res) {
headers += res[0] + "\r\n";
}
}
res = email.match(/^Content-Transfer-Encoding:(.*)/m);
if (res) {
headers += res[0] + "\r\n";
}
res = email.match(/^MIME-Version:(.*)/m);
if (res) {
headers += res[0] + "\r\n";
}
var splitEmail = email.split("\r\n\r\n");
splitEmail.shift();
email = headers + "\r\n" + splitEmail.join("\r\n\r\n");
} else {
email = headers + "\r\n" + "Empty email";
}
new AWS.SES().sendRawEmail({
RawMessage: { Data: email }
}, function(err, data) {
if (err) context.fail(err);
else {
console.log('Sent with MessageId: ' + data.MessageId);
context.succeed();
}
});
}
注意:您需要设置 from_address 和 to_address 以及 IAM 角色才能正常工作。
有关详细步骤,请参阅以下媒体文章,该文章还将 link 到具有 CloudFormation 堆栈的 Github 存储库以进行自动配置。
Forwarding Emails to your Inbox Using Amazon SES
或者您可以使用 Amazon Workmail 接收电子邮件,但它会增加每月订阅费用。
我正在尝试设置 AWS SES
,但我在使用 reading/receiving 电子邮件时遇到问题。最后,我希望能够使用 Outlook 或其他一些移动客户端应用程序来查看电子邮件 sent/received 通过 SES 验证的地址。
我已经成功验证了我的域和电子邮件地址。此外,我还设置了一个已读回执,可以将任何收到的电子邮件从 SES 转发到 S3 存储桶,但我不确定如何使用 IMAP/POP3 提取这些电子邮件。
我是否需要创建自己的电子邮件服务器仍然与 lambda
功能结合使用以将收到的电子邮件转发到该服务器,以便我可以使用客户端应用程序提取这些电子邮件。有没有办法使用 IMAP/POP3 直接连接到 SES?最后,我是否需要设置整个电子邮件堆栈,或者是否有一个简化的(最好是 NodeJS)邮件服务器,它可以只将电子邮件推送到客户端。
谢谢,
目前 IMAP/POP3 不支持 SES。我有类似的要求,在评估了几种方法后,我使用 Lambda 将电子邮件转发到我的网络邮件。
您可以使用以下 Lambda 代码转发转发到 SNS 主题的电子邮件。
var AWS = require('aws-sdk');
var forwardFrom = process.env.from_address;
var forwardTo = process.env.to_address;
exports.handler = function(event, context) {
var msgInfo = JSON.parse(event.Records[0].Sns.Message);
// don't process spam messages
if (msgInfo.receipt.spamVerdict.status === 'FAIL' || msgInfo.receipt.virusVerdict.status === 'FAIL') {
console.log('Message is spam or contains virus, ignoring.');
context.succeed();
}
var email = msgInfo.content,
headers = "From: " + forwardFrom + "\r\n";
headers += "Reply-To: " + msgInfo.mail.commonHeaders.from[0] + "\r\n";
headers += "X-Original-To: " + msgInfo.mail.commonHeaders.to[0] + "\r\n";
headers += "To: " + forwardTo + "\r\n";
headers += "Subject: Fwd: " + msgInfo.mail.commonHeaders.subject + "\r\n";
if (email) {
var res;
res = email.match(/Content-Type:.+\s*boundary.*/);
if (res) {
headers += res[0] + "\r\n";
} else {
res = email.match(/^Content-Type:(.*)/m);
if (res) {
headers += res[0] + "\r\n";
}
}
res = email.match(/^Content-Transfer-Encoding:(.*)/m);
if (res) {
headers += res[0] + "\r\n";
}
res = email.match(/^MIME-Version:(.*)/m);
if (res) {
headers += res[0] + "\r\n";
}
var splitEmail = email.split("\r\n\r\n");
splitEmail.shift();
email = headers + "\r\n" + splitEmail.join("\r\n\r\n");
} else {
email = headers + "\r\n" + "Empty email";
}
new AWS.SES().sendRawEmail({
RawMessage: { Data: email }
}, function(err, data) {
if (err) context.fail(err);
else {
console.log('Sent with MessageId: ' + data.MessageId);
context.succeed();
}
});
}
注意:您需要设置 from_address 和 to_address 以及 IAM 角色才能正常工作。
有关详细步骤,请参阅以下媒体文章,该文章还将 link 到具有 CloudFormation 堆栈的 Github 存储库以进行自动配置。
Forwarding Emails to your Inbox Using Amazon SES
或者您可以使用 Amazon Workmail 接收电子邮件,但它会增加每月订阅费用。