Sendgrid入站webhook数据在Flask中完全为空白,但可以处理从请求发送的请求?

2024-04-25 19:41:49 发布

您现在位置:Python中文网/ 问答频道 /正文

我现在有一个heroku烧瓶应用程序。当它收到一个POST请求时,它使用sendgridapi向我的个人电子邮件发送一封包含POST数据的电子邮件。相关代码(驱动程序.sendgridemail是用https://github.com/sendgrid/sendgrid-python)编写的python的示例代码,字符串作为参数传递:

@app.route('/', methods=['GET', 'POST'])
def index():
if request.method == "POST":
    data = request.data.decode('utf-8')
    driver.sendgridemail("Data is here: %s" % (data)) 
    return data
else:
    return render_template("index.html")

当我发布使用请求.post公司名称:

^{pr2}$

我收到一封包含“数据在这里:{”some“:”Data“}”的电子邮件到我的个人电子邮件

然而,当我使用sendgrid入站解析特性时,转发到我个人电子邮件的唯一电子邮件是“datais here:”,这显然不太理想。在

这和内容类型有关吗?为什么它不处理来自传入电子邮件的数据?很明显,它能收到电子邮件,因为它可以被转发到我的个人电子邮件,每个flask应用程序,它只是不检索数据。换句话说,POST请求通过,但它无法检索任何数据,并给我一个空的二进制字符串。最后,是不是有点奇怪,仍然认为它是b?这是否意味着它永远不会通过sendgrid解析被解码成字符串,而是通过python requests post来解码?在


Tags: 数据字符串代码应用程序dataindexreturnhere
1条回答
网友
1楼 · 发布于 2024-04-25 19:41:49

根据docs

The request that will be sent to the HTTP endpoint will be encoded as multipart/form-data.

您需要使用request.formdict来访问Flask中的表单数据。在

Sendgrid的博客上有一个教程:https://sendgrid.com/blog/collect-inbound-email-using-python-and-flask/

另外,当您进行该更改时,您应该从您的requests.post调用中删除{},以便将其作为表单数据发送。在

相关问题 更多 >