Outlook加载项:使用EWS获取共享邮箱项目附件
我们的outlook加载项在共享邮箱的大多数情况下都能工作,但电子邮件中的附件类型为“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返回错误
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
}