Читать вложения из электронных писем, хранящихся в Amazon S3 - PullRequest
0 голосов
/ 26 апреля 2018

Пожалуйста, кто-нибудь, помогите мне ..

Я хранил электронные письма в S3 в необработанном формате (эти электронные письма хранятся в S3 с помощью триггера от SES). Затем, когда эти объекты сохраняются в S3, другой триггер вызывает лямбду. Он работает нормально .. Итак, у этих писем есть вложения ... И теперь я хочу, чтобы эти вложения были сохранены в другом S3-хранилище. Моя лямбда-нота находится в 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);
        }
    });   

Итак, в переменной data у меня есть документ 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--

Спасибо.

1 Ответ

0 голосов
/ 26 апреля 2018

Это работает сейчас .. Если кому-то нужно сделать то же самое:

Используйте libparser lib:

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);
                }
            })
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...