我正在使用 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
附件内容?
要获取附加消息,您必须使用
/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,则会出现错误。