首页 > 解决方案 > 如何在 AWS Lambda 上解析 Mailgun API 转发的多部分/表单数据?

问题描述

这是我想要实现的目标:用户可以通过与 Mailgun 服务集成的 test@myDomain.com 向我发送电子邮件。根据我设置的规则,Mailgun 会将这封电子邮件作为 POST 请求转发到 https:url-to-my-lambda-function.amazonaws.com/email。然后我在 Lambda 中收到这个 POST 请求,解析它,然后从电子邮件中获取并使用 html 进行进一步的工作。

我遇到的问题是 Mailgun 不是以 JSON 形式发送他们的 POST,而是以 multipart/form-data 的形式发送。我一直无法找到解析此内容类型并获取电子邮件 html 的方法。这是来自 Mailgun 的转发电子邮件示例(请注意,从技术上讲,mailgun 也会发送附件,但我只关心剥离的 html 字段)。

另请注意,我正在使用无服务器框架,需要在 Python 或 Node.js 中编写此函数。

我试图做的事情来解析 POST 请求:

<td+align="center"+valign="top"+id="m_-6910385412628668961m_-3845437051063103019m_-3682438291175620773bodyCell"+style="padding-bottom:40px;height:100%;margin:0;padding:0;width:100%;border-top:0">\n++++++++++++++++++++++++\n++++++++++++++++++++++++<table+border="0"+cellpadding="0"+cellspacing="0"+width="100%"+style="border-collapse:collapse">\n++++++++++++++++++++++++++++<tbody><tr>\n++++++++++++++++++++++++++++++++<td+align="center"+valign="top">\n++++++++++++++++++++++++++++++++++++\n++++++++++++++++++++++++++++++++++++<table+border="0"+cellpadding="0"+cellspacing="0"+width="100%"+id="m_-6910385412628668961m_-3845437051063103019m_-3682438291175620773templatePreheader"+style="border-collapse:collapse;background-color:#eaeaea;border-top:0;border-bottom:1px+solid+#d0d0d0">\n++++++++++++++++++++++++++++++++++++++++<tbody><tr>\n++++++++++++++++++++++++++++++++++++++++\t<td+align="center"+valign="top">\n++++++++++++++++++++++++++++++++++++++++++++++++<table+border="0"+cellpadding="0"+cellspacing="0"+width="600"+style="border-collapse:collapse">

如何解析这个 POST 请求?这甚至可能吗?

标签: amazon-web-servicesaws-lambdamultipartform-dataserverless-frameworkmailgun

解决方案


您可能应该考虑使用旨在解析多部分表单数据的模块,例如https://www.npmjs.com/package/parse-formdata


推荐阅读