在将AWS S3作为对象存储后如何从AWS S3获得可读的电子邮件?

问题描述 投票:0回答:1

我已经设置了SES以在我的域上接收电子邮件,然后将电子邮件存储到S3。我会在收到新电子邮件时触发SNS通知,这会触发lambda对电子邮件中的内容进行处理。一切都按预期工作,但是,我无法从S3提取的电子邮件中获取任何有意义的数据。例如,从电子邮件的S3获取对象将为我提供此数据:

 <div dir=3D"ltr">ssadsadasdasdas</div><br><div class=3D"gmail_quote"><div d=
ir=3D"ltr" class=3D"gmail_attr">On Tue, Nov 5, 2019 at 5:30 PM Rahul Patil =
&lt;<a href=3D"mailto:[email protected]">[email protected]<=
/a>&gt; wrote:<br></div><blockquote class=3D"gmail_quote" style=3D"margin:0=
px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><=
div dir=3D"ltr">asdsadasdasdasd</div><br><div class=3D"gmail_quote"><div di=
r=3D"ltr" class=3D"gmail_attr">On Tue, Nov 5, 2019 at 5:27 PM &lt;<a href=
=3D"mailto:[email protected]" target=3D"_blank">[email protected]</a>&g=
t; wrote:<br></div><blockquote class=3D"gmail_quote" style=3D"margin:0px 0p=
x 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Body<b=
r>

获取数据的代码

const obj = await s3.getObject(getObjectParams).promise();
      console.log(obj);
      let objectData = obj.Body.toString("utf-8");
      console.log(objectData)

我不需要所有的HTML,仅发送者的电子邮件和正文就足够了。有没有一种内置的方法可以过滤所需的数据?是否可以在lamba中插入任何node-email-parser模块?更重要的是,我做对了吗?谢谢!

amazon-web-services amazon-s3 aws-lambda amazon-ses
1个回答
0
投票

是,您需要解析器。

Amazon SES将以RFC822格式以S3格式存储传入的电子邮件,这意味着完全从电汇接收到的电子邮件。根据定义,这是纯文本,无论电子邮件有多复杂,即使有附件也是如此。 RFC822文本内的某个地方的正文中可能有也可能没有HTML。电子邮件的正文只能是纯文本,可以是HTML(最常见),也可以两者都为。

您需要使用可以解析RFC822的库。其中有很多。使用哪种语言取决于您的语言选择。您还需要熟悉Internet电子邮件的解剖结构,即RFC822。您可以通过谷歌搜索找到有关此的大量信息。建议:您自己的电子邮件客户端很可能以RFC822格式保存电子邮件,然后您可以将其用作“本机”格式的电子邮件的外观示例。只需在您喜欢的文本查看器中查看它即可。

您的问题可以改写为RFC822解析问题。有些人将此类文件称为.eml文件。同样的事情。

快乐狩猎。

© www.soinside.com 2019 - 2024. All rights reserved.