Outlook加载项:使用EWS获取共享邮箱项目附件

Outlook加载项:使用EWS获取共享邮箱项目附件,outlook,office-js,exchangewebservices,office-addins,outlook-web-addins,Outlook,Office Js,Exchangewebservices,Office Addins,Outlook Web Addins,我们的outlook加载项在共享邮箱的大多数情况下都能工作,但电子邮件中的附件类型为“Office.MailboxEnums.AttachmentType.Item”的情况除外,例如“.msg”文件 我们通常通过REST获取所有附件内容,因为它们作为base-64返回,但是使用“AttachmentType.Item”正文是电子邮件正文,而不是base-64。在本例中,我们调用EWS下载该附件,处理正文并以字节[]返回 我们目前面临的问题是,当共享邮箱上的附件类型为“.msg”时,EWS返回错误

我们的outlook加载项在共享邮箱的大多数情况下都能工作,但电子邮件中的附件类型为“
Office.MailboxEnums.AttachmentType.Item
”的情况除外,例如“
.msg
”文件

我们通常通过REST获取所有附件内容,因为它们作为base-64返回,但是使用“
AttachmentType.Item
”正文是电子邮件正文,而不是base-64。在本例中,我们调用EWS下载该附件,处理正文并以字节[]返回

我们目前面临的问题是,当共享邮箱上的附件类型为“.msg”时,EWS返回错误“
ErrorAccessDenied
”,这很奇怪,因为其他附件已下载,我们已确保传递“
TargetMailbox

我们通过以下方式获取targetMailbox:

一旦有了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获取项目附件,请按照

中的“获取附加到Outlook项目或组帖子的Outlook邮件的MIME内容”进行操作。共享邮箱不支持EWS,仅支持REST。我们的文档中可能遗漏了这一点。我们会更新的。若要通过REST获取项目附件,请按照中的“获取附加到Outlook项目或组帖子的Outlook邮件的MIME内容”进行操作。若要通过REST获取项目附件,请按照右侧的“获取附加到Outlook项目或组帖子的Outlook邮件的MIME内容”,浏览了这些文档,是的,它没有提到任何关于代理访问的内容。可能必须更新外接程序才能同时使用v2 API和Graph API。这是否解决了您的问题?我们已经发布了与问题答案相同的评论。是的,我们现在只需筛选共享邮箱的任何itemAttachments。谢谢,如果能在文档中看到这方面的参考,我会很高兴,因为我花了几天时间试图解决这个问题。令人高兴的是,在测试中发现一些“.msg”文件是通过REST下载的,因为它们的类型是“fileAttachment”,但这很好,因为我们可以检索内容。只需过滤少数“.msg”文件,而不过滤其他文件,就有点混乱了。
 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
        
}