如何判断Microsoft Graph获取的Mail Message是已发送还是已接收?
区分Graph API返回的邮件是已发送还是已接收
嘿,这个问题其实不用盯着createdDateTime和receivedDateTime纠结,Graph给的邮件对象里有几个更直接的属性能帮你快速区分:
from与sender属性:这是最直接的判断依据——如果邮件的from.emailAddress.address等于当前授权用户的邮箱,那这就是你发送出去的邮件;反之,from显示的是外部发件人,那就是你接收的邮件。parentFolderId属性:邮件所在的文件夹ID也能帮你定位。你可以先调用/me/mailFolders接口拿到「已发送邮件」和「收件箱」的文件夹ID,之后对比目标邮件的parentFolderId:匹配已发送文件夹ID就是已发送邮件,匹配收件箱ID就是接收的邮件。这个方法在特殊场景(比如给自己发邮件)下特别好用。toRecipients属性:已发送邮件的toRecipients列表里是收件人的邮箱信息;而接收的邮件,toRecipients里会包含你自己的邮箱。
举个实际调用的例子,假设你要获取某封邮件的详情:
GET /me/messages/{message-id}
返回结果里,先检查from.emailAddress.address是否和当前用户邮箱一致,就能快速判断邮件类型。如果遇到给自己发邮件的情况,再结合parentFolderId就能准确区分了。
内容的提问来源于stack exchange,提问作者MojoDK
相关产品推荐
相关产品推荐

