You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

exchangelib中SendNotification返回XML解析的response.data来源查询

关于exchangelib推送订阅示例中response.data的说明

你在官方文档中找不到response.data的引用是正常的,这个变量名是文档示例里的代称,并非exchangelib库内置的固定属性,它本质是你自行搭建的回调服务收到的Exchange服务器主动推送的HTTP POST请求的原始请求体内容。

具体说明如下:

  • 文档注释已经明确说明:推送通知是Exchange服务器向你预设的回调URL发送的POST请求,请求体里携带SendNotification格式的XML文档,response.data指代的就是这个POST请求的原始XML内容
  • 该值的具体获取方式和你使用的Web开发框架有关,不需要严格对应response.data这个变量名:
    • 若使用Flask框架,对应值为request.data
    • 若使用Django框架,对应值为request.body
    • 其他Web框架均可找到对应获取原始POST请求体的属性,直接将该属性值传入ws.parse()方法即可完成解析
  • 以下是Flask框架下的完整回调实现示例,可对应理解示例里的逻辑:
from flask import Flask, request
from exchangelib import Account, Credentials
from exchangelib.services import SendNotification

app = Flask(__name__)
# 初始化Exchange账号配置
creds = Credentials("your_email@example.com", "your_password")
account = Account("your_email@example.com", credentials=creds, autodiscover=True)

@app.route("/exchange_notify_callback", methods=["POST"])
def callback_handler():
    # 此处request.data就是示例中代指的response.data
    ws = SendNotification(protocol=account.protocol)
    for notification in ws.parse(request.data):
        # 此处处理通知逻辑,比如筛选新邮件通知、拉取邮件内容、构造新邮件发送等
        pass
    return ""

内容的提问来源于stack exchange,提问作者Carlo Navici

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 14:09:04