使用msgraph-sdk-php获取Outlook邮件的两类技术问题
问题解答
1. 遍历邮件对象获取属性值的正确方式
出现"Cannot use object of type Microsoft\Graph\Model\User as array"错误,是因为你误把User对象当成邮件列表数组遍历,或是获取到的邮件列表是Model集合而非普通数组。
正确操作步骤:
- 先确保获取到的是邮件列表集合,而非User对象。调用API获取邮件的示例代码:
// 获取当前用户的邮件列表 $messages = $graphClient->me()->messages()->get()->getValue();
- 遍历
$messages时,每个元素是Microsoft\Graph\Model\Message对象,所有属性通过对应的getXXX()方法获取,比如获取bodyPreview:
foreach ($messages as $message) { // 获取邮件预览内容 $bodyPreview = $message->getBodyPreview(); // 其他属性调用示例 $subject = $message->getSubject(); $receivedTime = $message->getReceivedDateTime(); }
Message模型的所有属性都有对应getter方法,可参考SDK内Microsoft\Graph\Model\Message类的定义调用。
2. 获取邮件线程消息的API端点
获取指定邮件线程的所有消息,使用以下端点:
- 当前登录用户:
/me/threads/{threadId}/messages - 指定用户:
/users/{userId}/threads/{threadId}/messages
对应的SDK调用示例:
$threadId = "目标线程ID"; // 获取当前用户指定线程的所有消息 $threadMessages = $graphClient->me()->threads($threadId)->messages()->get()->getValue();
内容的提问来源于stack exchange,提问作者MalcolmInTheCenter
相关产品推荐
相关产品推荐

