如何使用AWS开发工具包SES发送附件

时间:2020-06-10 17:20:12

标签: node.js amazon-web-services amazon-simple-email-service

使用AWS开发工具包SES时遇到一些问题。

我有一个Lambda,其目标是生成文件并以CSV格式发送。

创建我的AWS Lambda并编写代码以获取数据后,我检查了Aws docs以发送带有附件的电子邮件并编写了以下功能:

function sendEmail (textAttachment) {
        const SENDER = 'sender_email@domain.com';
        const RECEIVER = 'receiver_email@domain.com';

        let buff = new Buffer(textAttachment);
        let base64data = buff.toString('base64');

        let Data = `
            From: "Sender Name" ${SENDER}
            To: ${RECEIVER}
            Subject: "Activity export"
            Content-Type: text/plain; name="export.txt";
            Content-Disposition: attachment;filename="export.txt"
                creation-date="${new Date()}";
            Content-Transfer-Encoding: base64
            ${base64data}
        `
        var params = {
            Destinations: [ RECEIVER ],
            RawMessage: { Data },
            Source: SENDER
        };
        return ses.sendRawEmail(params).promise();
    }

不幸的是,即使我收到了电子邮件,我也遇到了其他问题:

1)整个文本在正文中,而不在附件中
2)电子邮件没有主题(次要问题)
3)编码似乎无法正常工作(我得到了编码后的文本,但是我可以避免编码)

显然,第一点是我要解决的主要问题,但是如果您可以帮助其他两点,我将不胜感激:)

1 个答案:

答案 0 :(得分:0)

RawMessage需要使用base64编码,而不是文件数据。

    var params = {
        Destinations: [ RECEIVER ],
        RawMessage: { Buffer.from(Data).toString('base64') },
        Source: SENDER
    };