0

Я делаю поиск в почтовом ящике в Outlook с помощью makeEwsRequestAsync.makeEwsRequestAsync не работает в Outlook Desktop client

var mailbox = Office.context.mailbox; 
mailbox.makeEwsRequestAsync(request, callback); 

Он работает хорошо в веб-клиенте Outlook, но я всегда получаю пустой результат в клиентском столе Outlook.

функции обратного вызова:

function callback(asyncResult) { 

     var result = asyncResult.value; 
     var context = asyncResult.context; 

     if (asyncResult.status == "succeeded") { 

      var xmlDoc = $.parseXML(result.toString()); 
} 
} 

После XML разбора, $ (xmlDoc) .text() дает текст XML.

Но $ (xmlDoc) .find ('node') не работает в клиентском окружении Outlook (Outlook 2013). Я попытался присвоить имя узла в столицах ниже (например, s: Envelope, s: envelope, S: ENVELOPE), но find() не работает

Что мне нужно сделать, чтобы получить результат в Outlook Desktop. Я использую outlook 2013.

+0

вы должны дать больше информировать (например, что происходит, когда он не отображается или не активируется или не работает) и код, скорее всего, это связано с тем, что вы не правильно разбираете результаты (попробуйте просто вернуть нерассмотренные результаты), которые могут произойти даже с разными веб-браузерами (например, работает ли код как в chrome, так и в IE?). Версия почтового ящика 1.3 также не работает в Outlook 2013, вам нужен Outlook 2016, но вы не разместили достаточно информации, чтобы узнать, используете ли вы это или нет. –

+0

@glen спасибо, обновил мой вопрос. – Selva

+0

Я использую окна 10 и отлично работаю в EDGE (IE новейший). но $ (xml) .find ('node') не работает в версии рабочего стола Outlook – Selva

ответ

1

Вам нужно разобрать XML по-разному, в зависимости от клиента, есть обсуждение в https://msdn.microsoft.com/en-us/library/office/fp160952.aspx на нем. Если вы выгрузите содержимое result.toString(), вы сможете узнать, что на самом деле возвращается в обработчик Javascript, работающий в Outlook, и затем вы сможете определить, как правильно его обрабатывать.

Есть ряд примеров, Microsoft выложила на GitHub например https://github.com/OfficeDev/Outlook-Add-in-JavaScript-MakeEWSRequest

Лично я использую следующие, который работает в большинстве браузеров и настольных прогноз версии, но я вообще работать, выводя результаты первых, чтобы увидеть, что возвращается и то его легко работать, что вы должны делать дальше и какие Js объекты лучше всего использовать

function callbackFindItems(asyncResult) { 
 
    //$('#ChkTest').text(asyncResult.value); 
 
    var result = asyncResult.value; 
 
    var context = asyncResult.context; 
 
    var is_chrome = navigator.userAgent.toLowerCase().indexOf('chrome') > -1; 
 
    if (is_chrome) { 
 
     var parser = new DOMParser(); 
 
     var doc = parser.parseFromString(asyncResult.value, "text/xml"); 
 
     var values = doc.childNodes[0].getElementsByTagName("ItemId"); 
 
     var itemId = values[0].attributes['Id'].value; 
 
     var changeKey = values[0].attributes['ChangeKey'].value; 
 
     var request = UpdateVerb(itemId, changeKey, hexToBase64(_VerOptions)); 
 
     var envelope = getSoapEnvelope(request); 
 
     // $('#ChkTest').text(request); 
 
     Office.context.mailbox.makeEwsRequestAsync(envelope, updateCallBack); 
 
    } 
 
    else { 
 
     var parser = new DOMParser(); 
 
     var doc = parser.parseFromString(asyncResult.value, "text/xml"); 
 
     var values = doc.childNodes[0].getElementsByTagName("t:ItemId"); 
 
     var itemId = values[0].attributes['Id'].value; 
 
     var changeKey = values[0].attributes['ChangeKey'].value; 
 
     var request = UpdateVerb(itemId, changeKey, hexToBase64(_VerOptions)); 
 
     var envelope = getSoapEnvelope(request); 
 
     //$('#ChkTest').text(request); 
 
     Office.context.mailbox.makeEwsRequestAsync(envelope, updateCallBack); 
 
    } 
 
}

+0

именно тем, что я сделал вчера, чтобы решить проблему. благодаря :) – Selva

 Смежные вопросы

  • Нет связанных вопросов^_^