【问题标题】:Outlook add-in : Get shared mailbox ItemAttachment using EWSOutlook 加载项:使用 EWS 获取共享邮箱 ItemAttachment
【发布时间】:2020-06-22 03:53:17
【问题描述】:

我们的 Outlook 插件在大多数情况下都适用于共享邮箱,除非电子邮件中的附件是“Office.MailboxEnums.AttachmentType.Item”类型的文件,例如“.msg”文件。

Environment is Outlook web and desktop.

我们主要通过 REST 获取所有附件内容,因为它们以 base-64 格式返回,但“AttachmentType.Item”的正文是电子邮件正文,而不是 base-64。在这种情况下,我们调用 EWS 以下载该附件,处理正文并以 byte[] 形式返回;

我们目前遇到的问题是,当共享邮箱上的附件类型为“.msg”时,EWS 返回错误“ErrorAccessDenied”,这很奇怪,因为下载了其他附件并且我们'我们确保我们通过了“TargetMailbox

我们通过:https://docs.microsoft.com/en-us/office/dev/add-ins/outlook/delegate-access获取目标邮箱

一旦我们有了 accessToken 和 targetMailbox,我们就调用后端

GetData(token, Id){
    let sharedMailBox = GetTargetMailbox(token);
    return this.$http.post("DownloadAttachment", {
        token: sharedMailBox.token,
        url: Office.context.mailbox.ewsUrl,
        attachmentId: Id,
        mailbox: sharedMailBox.mailbox
    }, {
        responseType: 'arraybuffer',
    }).then(response => response.data);
}

后台

 DownloadAttachment(Request request){
            var service = new ExchangeService
            {
                Credentials = request.token,
                Url = request.url
            };
            
            if (request.mailbox != "")
            {
                FolderId SharedMailbox = new FolderId(WellKnownFolderName.Inbox, request.TargetMailbox);
                ItemView itemView = new ItemView(1);
                service.FindItems(SharedMailbox, itemView); //This throws ErrorAccessDenied
            }
        
            //do other stuff and return data
        
}

不确定,如何获取共享邮箱的 itemAttachment。

【问题讨论】:

  • 共享邮箱不支持 EWS,仅支持 REST。这可能在我们的文档中被遗漏了。我们会更新它。要通过 REST 获取项目附件,请遵循 docs.microsoft.com/en-us/graph/outlook-get-mime-message 中的“获取附加到 Outlook 项目或群组帖子的 Outlook 邮件的 MIME 内容”。要通过 REST 获取项目附件,请遵循“获取附加到 Outlook 的 Outlook 邮件的 MIME 内容”项目或群组帖子”在docs.microsoft.com/en-us/graph/outlook-get-mime-message
  • 啊,对,浏览了这个文档,是的,它没有说明任何关于委托访问的内容。 docs.microsoft.com/en-us/exchange/client-developer/…。可能必须更新加载项才能同时使用 v2 API 和 Graph API。
  • 这解决了您的问题吗?我们发布了相同的评论作为问题的答案。
  • 是的,我们现在只过滤共享邮箱的任何 itemAttachments。谢谢,很高兴在文档中看到对此的参考,因为我花了几天时间试图解决这个问题。干杯
  • 也就是说,在测试中发现一些“.msg”文件是通过 REST 下载的,因为它们的类型是“fileAttachment”stackoverflow.com/q/62550158/1381217,但这很好,因为我们可以检索内容。过滤几个“.msg”文件而不是其他文件有点令人困惑。

标签: outlook office-js exchangewebservices office-addins outlook-web-addins


【解决方案1】:

共享邮箱不支持 EWS,仅支持 REST。这可能在我们的文档中被遗漏了。我们会更新它。要通过 REST 获取项目附件,请按照 https://docs.microsoft.com/en-us/graph/outlook-get-mime-message 中的“获取附加到 Outlook 项目或群组帖子的 Outlook 邮件的 MIME 内容”

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多