我已经设置了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 =
<<a href=3D"mailto:[email protected]">[email protected]<=
/a>> 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 <<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 SES将以RFC822格式以S3格式存储传入的电子邮件,这意味着完全从电汇接收到的电子邮件。根据定义,这是纯文本,无论电子邮件有多复杂,即使有附件也是如此。 RFC822文本内的某个地方的正文中可能有也可能没有HTML。电子邮件的正文只能是纯文本,可以是HTML(最常见),也可以两者都为。
您需要使用可以解析RFC822的库。其中有很多。使用哪种语言取决于您的语言选择。您还需要熟悉Internet电子邮件的解剖结构,即RFC822。您可以通过谷歌搜索找到有关此的大量信息。建议:您自己的电子邮件客户端很可能以RFC822格式保存电子邮件,然后您可以将其用作“本机”格式的电子邮件的外观示例。只需在您喜欢的文本查看器中查看它即可。
您的问题可以改写为RFC822解析问题。有些人将此类文件称为.eml
文件。同样的事情。
快乐狩猎。