从SES接收/阅读电子邮件

超级威兹

我正在尝试设置AWS SES,但是在阅读/接收电子邮件时遇到了问题。最终,我希望能够使用Outlook或其他一些移动客户端应用程序,以便通过SES查看已发送/接收到已验证地址的电子邮件。

我已经成功验证了我的域和电子邮件地址。此外,我设置了已读回执,可以将所有从SES收到的电子邮件转发到S3存储桶,但是我不确定如何使用IMAP / POP3提取这些电子邮件。

我是否仍需要创建我自己的电子邮件服务器以及lambda将接收到的电子邮件转发到该服务器功能,以便可以使用客户端应用程序提取这些电子邮件。无法使用IMAP / POP3直接连接到SES吗?最后,我是否需要设置整个电子邮件堆栈,还是有一个简化的(最好是NodeJS)邮件服务器,它可以仅将电子邮件发送到客户端。

谢谢,

阿善

目前,SES不支持IMAP / POP3。我有类似的要求,并且在评估了几种方法之后,我使用Lambda将电子邮件转发到我的Web邮件。

您可以使用以下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角色才能起作用。

有关详细步骤,请参考以下中篇文章,该文章还将链接到具有CloudFormation堆栈的Github存储库,以实现自动配置。

使用Amazon SES将电子邮件转发到您的收件箱

或者,您可以使用Amazon Workmail接收电子邮件,但是它将增加每月的订阅费用。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章