Читать вложения из электронных писем, хранящихся в Amazon S3
Пожалуйста, кто-нибудь, помогите мне..
Я сохранил электронные письма в 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 ответ
Это работает сейчас.. Если кому-то нужно сделать то же самое:
Используйте mailparser 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);
}
})