[英]Mark email as read using microsoft graph api
我正在编写一个将使用 Microsoft Graph api 的脚本(使用此库https://github.com/microsoftgraph/msgraph-sdk-php )
我设法连接并搜索特定的 email,下载附件,但现在我需要将 email 标记为已读并设置标志,但我不知道如何操作。
到目前为止,我已经使用本教程 ( https://learn.microsoft.com/en-us/graph/tutorials/php?tabs=aad ) 来连接和阅读电子邮件。
public static function getInbox() {
$token = GraphHelper::getUserToken();
GraphHelper::$userClient->setAccessToken($token);
// Only request specific properties
$select = '$select=from,isRead,receivedDateTime,subject,hasAttachments';
// Sort by received time, newest first
$orderBy = '$orderBy=receivedDateTime DESC';
$filter = '$filter=isRead eq false';
$requestUrl = '/me/mailFolders/inbox/messages?'.$filter.'&'.$select.'&'.$orderBy;
$messages = GraphHelper::$userClient->createCollectionRequest('GET', $requestUrl)
->setReturnType(Model\Message::class)
->setPageSize(100)
->getPage();
foreach ($messages as $message) {
if(strpos($message->getSubject(), 'XML')!==false ){
print('Message: '.$message->getSubject().PHP_EOL);echo PHP_EOL;
$expand="microsoft.graph.itemattachment/item";
$requestUrl = '/me/messages/'.$message->getId().'/attachments/?$expand= '.$expand;
$docDatas = GraphHelper::$userClient->createCollectionRequest('GET', $requestUrl)
->setReturnType(Model\Message::class)
->setPageSize(1)
->getPage();
$dat = $docDatas[0]->getProperties();
//parseXmlOrder(base64_decode($dat['contentBytes']));
$sendBody = array( 'isRead' => true );
var_dump( GraphHelper::$userClient->createRequest('PATCH', '/me/messages/'.$message->getId())
->attachBody($sendBody)
->execute() );
}
}
}
这是我目前的代码。 就在 function 的末尾,我正在尝试设置 isRead 属性。
如果有人能给我一些我出错的建议,那将是惊人的,并帮助我停止用头撞墙。
谢谢,
结果证明给予读写权限确实有帮助。 我只有读取权限。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.