设置是Outlook 2013和Exchange Server 2013(内部部署)。根据{{3}}:
加载项可以使用附件API将有关附件的信息发送到远程服务。然后,该服务可以直接联系Exchange服务器以检索附件。
由于设置是内部部署,因此不会暴露给外部世界。因此,远程服务将无法访问它。
这样的事情可以纯粹用JavaScript完成吗?
我尝试了这个没有成功:
function getAttachmentViaSOAP(attachmentId) {
var request =
'<?xml version="1.0" encoding="utf-8"?>' +
'<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"' +
' xmlns:xsd="http://www.w3.org/2001/XMLSchema"' +
' xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"' +
' xmlns:t="http://schemas.microsoft.com/exchange/services/2006/types">' +
' <soap:Header>' +
' <RequestServerVersion Version="Exchange2013" xmlns="http://schemas.microsoft.com/exchange/services/2006/types" soap:mustUnderstand="0" />' +
' </soap:Header>' +
' <soap:Body>' +
' <GetAttachment xmlns="http://schemas.microsoft.com/exchange/services/2006/messages" xmlns:t="http://schemas.microsoft.com/exchange/services/2006/types">' +
' <AttachmentShape/>' +
' <AttachmentIds>' +
' <t:AttachmentId Id="' + attachmentId + '"/>' +
' </AttachmentIds>' +
' </GetAttachment>' +
' </soap:Body>' +
'</soap:Envelope>';
return request;
}
function sendAttachmentRequest(attachment) {
var settings = {
'async': true,
'crossDomain': true,
'url': attachment.outlook_exchange_server_url,
'method': 'POST',
'headers': {
'Authorization': 'Bearer ' + attachment.attachment_token,
'Content-Type': 'text/xml; charset=utf-8',
'Cache-Control': 'no-cache'
},
'data': getAttachmentViaSOAP(attachment.attachment_id)
}
$.ajax(settings).done(function (response) {
console.log(response);
});
}
是否可以将CORS设置添加到IIS / Exchange服务器以允许此操作?或其他任何方式吗?
答案 0 :(得分:0)
Outlook Web Add-in的核心是在远程Web主机上运行的Web应用程序。如果您的Web服务器无法与您的Exchange Server通信,那么几乎 nothing 将起作用。
鉴于此严重限制,Outlook Web加载项可能不适合您的解决方案。
答案 1 :(得分:0)
今天无法通过JavaScript实现这一目标。但是,我们正在考虑如何在最近的Outlook客户端中解决这个问题。这意味着如果添加了解决方案,则Outlook 2013和Exchange 2013本地安装程序将不支持该解决方案。