【问题标题】:Outlook mail ID to communicate with Graph?Outlook 邮件 ID 与 Graph 通信?
【发布时间】:2021-02-19 18:24:53
【问题描述】:

我有一个 Outlook 插件邮件项,我需要找到它的 ID,以便使用它与 Microsoft Graph 进行通信。

mailitem EntryID 与 Microsoft Graph 消息 ID 不同。

我想办法做到这一点的唯一方法是像这样获取 PR_INTERNET_MESSAGE_ID:

Public Shared Function GetInternetMessageID(ByRef mail As MailItem) As String
    Try
        Dim s As String = mail.PropertyAccessor.GetProperty("http://schemas.microsoft.com/mapi/proptag/0x007D001F").ToString.ToLower.Replace(vbCrLf, " ").Replace("  ", "").Replace("message-id:<", "message-id: <")
        Return "<" + s.GetInnerString("message-id: <", ">") + ">"
    Catch ex As System.Exception
        Return String.Empty
    End Try
End Function

然后像这样从 Graph 中获取消息:

https://graph.microsoft.com/v1.0/me/messages?$filter=internetMessageId eq '<HE1AR0301DD2555F3F27E45C4E1100@HE1PR1301MB2255.eurprd03.prod.outlook.com>'

但是从上面的代码中获取“PropertyAccessor.GetProperty”很慢 - 大约需要 3-4 秒。

所以现在我有了三个不同的 ID:

  • 邮件项条目 ID
  • PR_INTERNET_MESSAGE_ID
  • 图形消息 ID

嗯嗯。

我可以使用 mailitem EntryID 查找 Graph 消息吗? ... 或者我可以在 Outlook 邮件项中找到 Graph 邮件 ID?

你们如何使用 Outlook 插件邮件项并在 Microsoft Graph 中查找此邮件项的项目?

【问题讨论】:

    标签: microsoft-graph-api outlook-addin


    【解决方案1】:

    我找到的唯一方法是使用 ConvertId EWS 操作将 MAPI 条目 id 转换为 EWS id,然后将“+”替换为“_”,将“/”替换为“-”。

    【讨论】:

    • 据我了解,微软将在不久的将来关闭 EWS 以支持 Graph。我希望 Outlook 团队和 Graph 团队开始一起工作……叹息。
    • 嗯,不完全是 - 我的经验法则是做 Outlook 本身所做的事情。目前它只使用 EWS(当然除了 MAPI)。当他们从 EWS 切换到 Graph 时,我将升级我的代码。
    【解决方案2】:

    您应该能够使用 translateExchangeIds 图形服务在 entryId 和 restId 之间进行转换。

    https://docs.microsoft.com/en-us/graph/api/user-translateexchangeids?view=graph-rest-1.0&tabs=http

    这篇文章可能会有所帮助。

    https://www.michev.info/Blog/Post/2744/converting-item-and-folder-ids-via-the-graph-api

    #Graph uses URL-safe encoding, work around it
    $sourceID = ("AAAAAEI4ipo6z2ZLl269wbCQeHMHACD+gIoVTa5CpTqvk1wNXAAAAAAAAQwAACD+gIoVTa5CpTqvk1wNXAAAAq2DE+kAAA==" -replace "\+","-") -replace "/","_"
    $countToReplace = ($sourceID.ToCharArray() | ? {$_ -eq "="}).Count
    $sourceID = $sourceID.TrimEnd("=") + $countToReplace
     
    $body = @{
    "inputIds"= @($sourceID)
    "sourceIdType"= "entryId"
    "targetIdType"= "ewsId"
    } | ConvertTo-Json
    $res = Invoke-RestMethod -Method Post -Uri "https://graph.microsoft.com/v1.0/users/sharednew@Michev.info/translateExchangeIds" -Headers $authHeader -Verbose -ContentType "application/json" -Body $body
    $res.value.targetId
     
    $body = @{
    "inputIds"= @($sourceID)
    "sourceIdType"= "entryId"
    "targetIdType"= "immutableEntryId"
    } | ConvertTo-Json
    $res = Invoke-RestMethod -Method Post -Uri "https://graph.microsoft.com/v1.0/users/sharednew@Michev.info/translateExchangeIds" -Headers $authHeader -Verbose -ContentType "application/json" -Body $body
    $res.value.targetId
     
    AAMkADQxMTViNmEzLWViNWYtNGYxNy1iNmQ2LTZmNDVhN2Q5ZDI0NQBGAAAAAABCOIqaOs9mS5duvcGwkHhzBwAg/oCKFU2uQqU6r5NcDVwAAAAAAAEMAAAg/oCKFU2uQqU6r5NcDVwAAAKtgxPpAAA=
     
    AAAAAB2EAxGqZhHNm8gAqgAvxFoNACD-gIoVTa5CpTqvk1wNXAAAAq2DORgAAA2
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-07-31
      • 1970-01-01
      • 1970-01-01
      • 2020-04-27
      • 2021-07-31
      • 1970-01-01
      • 1970-01-01
      • 2011-05-28
      相关资源
      最近更新 更多