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框架,对应值为
- 以下是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
相关产品推荐
相关产品推荐

