我需要什么权限才能从 Microsoft Graph API 获取消息?

问题描述 投票:0回答:1

我正在使用 msgraph-sdk-php 检索 Outlook 电子邮件附件 并注意到有些电子邮件有

.eml
附件。当我通过拨打
/users/{user_id}/messages/{message_id}/attachments'
获取电子邮件附件时,我注意到回复不包含
contentBytes
键。
例如:

[
  {
    "@odata.type": "#microsoft.graph.itemAttachment",
    "id": "AAMkADlkMmfGrEBKuveYeL8nxW0=",
    "lastModifiedDateTime": "2023-08-02T17:12:04Z",
    "name": "single.eml",
    "contentType": "message/rfc822",
    "size": 23811,
    "isInline": false
  }
]

非 .eml 附件确实包含

contentBytes

所以我正在尝试这个端点

me/messages/<Message-Id>/$value
,这是我从这个post

得到的
$cid = (new Graph())->setAccessToken($accessToken)
    ->createCollectionRequest("GET",
        '/users/' . $userId . 'messages/' . $outlook_email->getId() . '/$value')
    ->setReturnType(\Microsoft\Graph\Model\Message::class)
    ->execute();

但我收到此错误

Client error: `GET https:\/\/graph.microsoft.com\/v1.0\/users\/636cb59d65489cmessages\/AAMkADlkMmIwZ_50gsmT9V9pNAAA=\/$value` resulted in a `403 Forbidden` response:\n{\"error\":{\"code\":\"Authorization_RequestDenied\",\"message\":\"Insufficient privileges to complete the operation.\",\"innerError\":{\"date\":\"2023-08-02T22:16:55\",\"request-id\":\"d3bcdef3-2c0d08121b5f\",\"client-request-id\":\"d3bcdef308121b5f\"}}}\n

我已经搜索了 Microsoft 文档,但我不知道要设置哪个权限才能执行该调用。

我需要什么许可?或者有什么不同的方式让我获取

.eml
附件内容?

php outlook microsoft-graph-api email-attachments
1个回答
0
投票

要获取附加消息,您必须使用

/users/{user_id}/messages/{message_id}/attachments/{attachment_id}/$value'

这记录在 https://learn.microsoft.com/en-us/graph/api/attachment-get?view=graph-rest-1.0&tabs=http

如果您可以获取其他邮件的文件附件,那么您的权限应该没问题。如果您只有 Mail.ReadBasic 权限,但 Mail.Read 委托或应用程序应该没问题,则可能是例外。但是,如果您尝试使用 me/messages//$value 中附件中的 MessageId,则会出现错误。

© www.soinside.com 2019 - 2024. All rights reserved.