从存储在 Amazon S3 中的电子邮件中读取附件

Read Attachments from Emails Stored in Amazon S3

请有人帮我..

我以原始格式将电子邮件存储在 S3 中(这些电子邮件通过 SES 的触发器存储在 S3 中)。然后,当这些对象存储在 S3 中时,另一个触发器调用 lambda。它工作正常。 所以,这些电子邮件有附件。现在我想把这个附件存储在另一个 S3 存储桶中。我的 lambda 在 nodejs 中。关于如何读取此附件并将其存储在另一个存储桶中有什么建议吗?

我正在尝试这样的事情:

s3.getObject({
Bucket: src_bkt,
Key: src_key
}, function(err, data) {
        if (err) {
            console.log(err, err.stack);
            callback(err);
        } else {
            console.log('data')
            console.log(data)
            console.log("Raw text:\n" + data.Body.toString('ascii'));
            callback(null, null);
        }
    });   

所以在数据变量中我有 S3 文档.. 如果我执行 data.body.toString('ascii') 我会收到很多关于电子邮件的信息。其中包括:

From: ************** <************@gmail.com>
Date: Thu, 26 Apr 2018 12:52:51 +0000
Message-ID: <CAHj39+X87rSiuXoDatbKQeOM5izANYmQPh7Mw3zjrZe15guAkQ@mail.gmail.com>
Subject: teste
To: "**********@****.in" <**********@****.in>
Content-Type: multipart/mixed; boundary="000000000000291211056abfdea3"

--000000000000291211056abfdea3
Content-Type: multipart/alternative; boundary="00000000000029120e056abfdea1"

--00000000000029120e056abfdea1
Content-Type: text/plain; charset="UTF-8"

teste com anexo

--00000000000029120e056abfdea1
Content-Type: text/html; charset="UTF-8"

<div dir="ltr">teste com anexo</div>

--00000000000029120e056abfdea1--
--000000000000291211056abfdea3
Content-Type: application/octet-stream; name="K9A02AK.LPR"
Content-Disposition: attachment; filename="K9A02AK.LPR"
Content-Transfer-Encoding: base64
Content-ID: <163020361c0eb0cadbf1>
X-Attachment-Id: 163020361c0eb0cadbf1

TFBSMDAwMDEwICAgIFQgTEVUICAgICAgICAxIDI2MSA2NzMgICAwICAgMCAgIDEgICAwICAgMCAg
IDAgNzM3ICA3MzEgICAuICAwICAgMCAgIDAgICAwICAgMCAxMDANCiN/QQ0KIy8xLyAgICAgICAg
ICAgICAgICAgICAgICAgICAgQSAgIEcgICBEICAgLSAgIFIgICAtICAgVCAgIC0gICBaIFJFTEUg
RVguICBfICAgXyAgIF8gICBfICAgXyBDTEkNCkxQUiBmIDAwMDAgMjAxODA0MjYwOTEyNTQgTEVU
TklTU0FQIEFQU2VydmljZUxQUg0KTFBSIGUgMDAwNCAyMDE4MDQyNjA5MTI1OCBMRVROSVNTQVAg
QVBTZXJ2aWNlTFBSDQpMRVQgPCAwMDAwIDIwMTgwNDI2MDkxMzE4IExFVE5JU1NBUCBBUFNlcnZp
Y2VMUFINCkxQUiBFIDAwMDQgMjAxODA0MjYwOTEzMTkgTEVUTklTU0FQIEFQU2VydmljZUxQUg0K
--000000000000291211056abfdea3--

谢谢。

现在正在运行.. 如果有人需要这样做:

使用邮件解析器库:

const simpleParser = require('mailparser').simpleParser;
            simpleParser(data.Body, (err, mail)=>{
                if(err){
                    console.log(err)
                    callback(null, null);
                }else{
                    console.log(mail)
                    console.log(mail.attachments[0])
                    console.log(mail.attachments[0].content)
                    console.log(mail.attachments[0].content.toString('ascii'))
                    callback(null, null);
                }
            })