【发布时间】:2019-12-05 19:35:10
【问题描述】:
我正在开发“outlook-web-addon”,它获取当前打开的消息并将其附加到新消息并将其发送到特定地址..所有这些都不允许用户交互(无撰写屏幕)
下面的代码一直传递到“创建附件”,这会产生错误: "此调用者或应用程序无法使用请求的 Web 方法"
function sendMessage() {
//$("#y").load("x.html");
//var mailBody = document.load("MailBody");
//<object type="text/html" data="mailBody.html"></object>
if (Office.context.mailbox.item.itemType !== Office.MailboxEnums.ItemType.Message) {
return;
}
var parentId='';
var mimeContent='';
//Get current selected mail message Id
var mailbox = Office.context.mailbox;
var item = mailbox.item;
var itemId = item.itemId;
//1- Create Mime content from the current selected mail message
var request_MimeContent =
'<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:m="http://schemas.microsoft.com/exchange/services/2006/messages" xmlns:t="http://schemas.microsoft.com/exchange/services/2006/types" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">' +
' <soap:Body>' +
' <m:GetItem>' +
' <m:ItemShape>' +
' <t:BaseShape>IdOnly</t:BaseShape>' +
' <t:AdditionalProperties>' +
' <t:FieldURI FieldURI="item:MimeContent" />' +
' <t:FieldURI FieldURI="item:Subject" />' +
' </t:AdditionalProperties>' +
' </m:ItemShape>' +
' <m:ItemIds>' +
' <t:ItemId Id="' +itemId +'" />' +
' </m:ItemIds>' +
' </m:GetItem>' +
' </soap:Body>' +
'</soap:Envelope>';
Office.context.mailbox.makeEwsRequestAsync(request_MimeContent, createMail);
}
function createMail(asyncResult) {
if (asyncResult.status == "failed") {
return;
} else {
//2- Get MimeContent
var response = $.parseXML(asyncResult.value);
window.mimeContent = response.getElementsByTagName("MimeContent");
//3- Create mail request
var request_CreateMail =
'<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:m="http://schemas.microsoft.com/exchange/services/2006/messages" xmlns:t="http://schemas.microsoft.com/exchange/services/2006/types" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">' +
' <soap:Header><t:RequestServerVersion Version="Exchange2010" /></soap:Header>' +
' <soap:Body>' +
' <m:CreateItem MessageDisposition="SaveOnly">' +
' <m:SavedItemFolderId><t:DistinguishedFolderId Id="sentitems" /></m:SavedItemFolderId>' +
' <m:Items>' +
' <t:Message>' +
' <t:Subject>Phishing Mail Report!</t:Subject>' +
' <t:Body BodyType="HTML">This is a Test !!</t:Body>' +
' <t:ToRecipients>' +
' <t:Mailbox><t:EmailAddress>M.Ziada@Zinad.net</t:EmailAddress></t:Mailbox>' +
' </t:ToRecipients>' +
' </t:Message>' +
' </m:Items>' +
' </m:CreateItem>' +
' </soap:Body>' +
'</soap:Envelope>';
Office.context.mailbox.makeEwsRequestAsync(request_CreateMail, createAttachment);
}
}
function createAttachment(asyncResult) {
if (asyncResult.status == "failed") {
return;
} else {
//4- Get new message Id
var response = $.parseXML(asyncResult.value);
window.parentId = response.getElementsByTagName("ItemId");
//5- Create attachment from the mime content and belongs to the new message
var request_CreateAttachment =
'<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:m="http://schemas.microsoft.com/exchange/services/2006/messages" xmlns:t="http://schemas.microsoft.com/exchange/services/2006/types" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">' +
' <soap:Header><t:RequestServerVersion Version="Exchange2010" /></soap:Header>' +
' <soap:Body>' +
' <m:CreateAttachment>' +
' <m:ParentItemId Id="' +window.parentId +'" />' +
' <m:Attachments>' +
' <t:ItemAttachment>' +
' <t:Name>Play tennis?</t:Name>' +
' <t:IsInline>false</t:IsInline>' +
' <t:Message>' +
' <t:MimeContent CharacterSet="UTF-8">' +window.mimeContent +'</t:MimeContent>' +
' </t:Message>' +
' </t:ItemAttachment>' +
' </m:Attachments>' +
' </m:CreateAttachment>' +
' </soap:Body>' +
'</soap:Envelope>';
Office.context.mailbox.makeEwsRequestAsync(request_CreateAttachment, sendItem);
}
}
function sendItem(asyncResult) {
if (asyncResult.status == "failed") {
return;
} else {
//6- Get attachment Id
var response = $.parseXML(asyncResult.value);
var attachmentId = response.getElementsByTagName("AttachmentId");
//7- Send newly created message
var request_SendItem =
'<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:m="http://schemas.microsoft.com/exchange/services/2006/messages" xmlns:t="http://schemas.microsoft.com/exchange/services/2006/types" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">' +
' <soap:Header><t: RequestServerVersion Version="Exchange2010" /></soap:Header>' +
' <soap:Body>' +
' <m:SendItem SaveItemToFolder="true">' +
' <m:ItemIds>' +
' <t:ItemId Id="' +window.parentId +'"/>' +
' </m:ItemIds>' +
' <m:SavedItemFolderId>' +
' <t:DistinguishedFolderId Id="sentitems" />' +
' </m:SavedItemFolderId>' +
' </m:SendItem>' +
' </soap:Body>' +
'</soap:Envelope>';
Office.context.mailbox.makeEwsRequestAsync(request_SendItem,
function(asyncResult2) {
if (asyncResult2.status == "failed") {
return;
} else {
}
});
}
}
我在 Chrome 上尝试,它给了我这个错误: "此调用者或应用程序无法使用请求的 Web 方法"
另外,我想知道这是否适用于桌面 Outlook 应用程序?
【问题讨论】:
标签: soap office365 exchangewebservices office-js outlook-web-addins