我正在使用适用于 Node.js 的 Microsoft Graph 客户端来获取电子邮件。我只对标题感兴趣。该代码正在运行,但最近我在internetMessageHeaders
通过 API 获取时遇到了一些错误。
对于某些消息,API 不会为该字段返回任何数据(并且代码没有对此进行检查,因此会出现错误)。
我尝试使用 POSTMAN 手动运行查询。?$select=internetMessageHeaders
用作查询参数以仅获取标头。如果我删除查询参数,我可以正常获取消息(正文等)。
我无法在文档中的任何地方找到为什么会发生这种情况。关于它发生了什么的任何想法?
编辑:这是我正在使用的 node.js 代码
const MicrosoftGraphClient = require("@microsoft/microsoft-graph-client").Client
async function fetchEmailMessageHeaders(id, credentials) {
let client = MicrosoftGraphClient.init({
authProvider: callback => callback(null, credentials.access_token)
});
let req = client.api(id).select("internetMessageHeaders");
let message = await req.get();
return message.internetMessageHeaders;
}
示例输出(消息变量的值):
{
"@odata.context": "https://graph.microsoft.com/v1.0/$metadata#users('156751349d3cc68b')/messages(internetMessageHeaders)/$entity",
"@odata.etag": "W/\"CQAAABYAAABcr9US8aH2RIGaOGQZwDg3AAKyfdpk\"",
"id": "AQMkADAwATM0MDAAMS1hZWIxLThjZmYALTAwAi0wMAoARgAAA3wcQrEUgfhHoZ0BD2jmyXYHAFyv1RLxofZEgZo4ZBnAODcAAAIBDAAAAFyv1RLxofZEgZo4ZBnAODcAArJaPEcAAAA=",
"internetMessageHeaders": [
{
"name": "Received",
"value": "from BY2NAM01HT225.eop-nam01.prod.protection.outlook.com (2603:10a6:803:118::39) by VI1PR0301MB2221.eurprd03.prod.outlook.com with HTTPS via VE1PR03CA0050.EURPRD03.PROD.OUTLOOK.COM; Wed, 10 Apr 2019 11:41:55 +0000"
}
...
]
}
问题是对于某些电子邮件,消息不包含 internetMessageHeaders
.
我正在使用收件箱订阅来接收来自 Outlook 的新电子邮件的事件。收到事件后,我使用 API 检索消息并从中提取标头。
API参考这里
编辑2:
以下是未能检索标头的事件的示例 JSON 输出:
{
"@odata.context": "https://graph.microsoft.com/v1.0/$metadata#users('53e07bf4-bb6a-4a82-a724-37dadfb1cf11')/messages(internetMessageHeaders)/$entity",
"@odata.etag": "W/\"CQAAABQAAADdeU+v2VzbRpZMSJGral7kAAXJkA==\"",
"id": "AAMkADhmMmVmM2NjLWFhNGMtNDBlYy04NzBkLTg5MmU2OWI0ODU4MgBGAAAAAAALg6E-e6CxRLEbZfrhFaDBBwAzAAMgKF1iTp242t34rFy5AAAAAAAOAAB5l_O62bUUTqTLk6KYrl4sAAGrJcjfAAA="
}