如何以纯文本格式将图形请求 header 设置为 return Outlook 任务 body

how to set Graph request header to return Outlook tasks body in plain text

我正在尝试从 /beta/me/outlook/tasks 到 return 获取 body 作为原始 text ("body": {"contentType": "text",}) 的响应,但我始终以 html 格式接收它。

async getTaskList(): Promise<TaskList[]> {
    try {
        let result = await this.graphClient
            .api('https://graph.microsoft.com/beta/me/outlook/tasks')
            .header("Prefer", "ContentType:'text'")
            //.header('Prefer', 'contentType="text"')
            .header('Prefer', 'outlook.timezone="central Europe Standard Time"')
            .header('IdType', 'ImmutableId')
            .select('id, owner, startDateTime, dueDateTime, subject, body')
            .filter("status ne 'completed' and startswith(subject,'Schválit home office')")
            .get();

        return result.value;
    } catch (error) {
        this.alertsService.add('Could not get tasks list', JSON.stringify(error, null, 2));
    }
}

预期结果:

"body": {
      "contentType": "text",
      "content": "Lorem ipsum ..."
    },

实际结果:

"body": {
      "contentType": "html",
      "content": "<html>\r\n<head>\r\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\r\n<meta name=\"Generator\" content=\"Microsoft Exchange Server\">\r\n<!-- converted from rtf -->\r\n<style><!-- .EmailQuote { margin-left: 1pt; padding-left: 4pt; border-left: #800000 2px solid; } --></style>\r\n</head>\r\n<body>\r\n<font face=\"Calibri\" size=\"2\"><span style=\"font-size:11pt;\">\r\n<div>Lorem ipsum ...</div>\r\n<div>&nbsp;</div>\r\n</span></font>\r\n</body>\r\n</html>\r\n"
    },

对于 Outlook/Exchange 端点,Prefer header 的正确语法是 outlook.body-content-type="text":

   .header("Prefer", "utlook.body-content-type='text'")

也就是说,according to the documentation/outlook/tasks只支持请求首选时区,不支持content-type。因此,您现在需要将 HTML 转换为文本。

鉴于它仍在 beta/preview 中,这可能会在发布之前发生变化。文档页面底部有一个反馈部分,您可以在其中询问他们添加此功能的计划(或缺乏计划)。