outlook加载项图像&;文件夹

outlook加载项图像&;文件夹,outlook,outlook-addin,outlook-web-app,outlook-web-addins,Outlook,Outlook Addin,Outlook Web App,Outlook Web Addins,我试图找到解决问题的办法,但没有找到任何地方,希望这里有人能救我 我在VS2015上用JavaScript编写插件,对正文消息进行加密和解密 1。第一个问题是接收器看不到的图像。 (谈论通过“插入图片内联”按钮复制到正文中的图像) 在撰写模式下我们对消息进行加密,然后在解密时它工作正常,因为撰写模式是客户端,他可以识别本地图像。 在读取模式下当用户想要解密邮件并查看他看不到的图像时,因为加密阻止outlook将本地图像转换为服务器上的数据 在我的代码中,我像这样接受正文消息(撰写模式) 然后,用

我试图找到解决问题的办法,但没有找到任何地方,希望这里有人能救我

我在VS2015上用JavaScript编写插件,对正文消息进行加密和解密

1。第一个问题是接收器看不到的图像。 (谈论通过“插入图片内联”按钮复制到正文中的图像)

撰写模式下我们对消息进行加密,然后在解密时它工作正常,因为撰写模式是客户端,他可以识别本地图像。 在读取模式下当用户想要解密邮件并查看他看不到的图像时,因为加密阻止outlook将本地图像转换为服务器上的数据

在我的代码中,我像这样接受正文消息(撰写模式)

然后,用户通过单击“发送”发送加密消息

在读取模式下,我只需将其打印到我的html中,以检查解密是否正确:

(JSON.parse(xhr.responseText).Data.Content));
然后我得到了图片的图标,但没有成功地显示出真正的图片。 图标的src指向他无法访问的地方

<img src="https://attachment.outlook.office.net/owa/*****/service.svc/s/GetFileAttachment?id=AAMkADUwMDE0YWM1LTYwODctNG ......
然后,我想将文件附加到邮件,因此,执行此操作的唯一方法是:

addFileAttachmentAsync(uri, attachmentName, optionsopt, callback opt)
然后,我需要为此方法创建文件的url,因此我使用此方法:

var objectURL = URL.createObjectURL(f);
但是现在,当我使用addFileAttachmentAsync方法与objectURL进行同步时,我发现有一个问题,它无法附加它,我认为URL是不正确的


谢谢大家

适用于所有希望解决此问题的人

**在outlook web中,此解决方案运行良好,但在outlook Desktop中,存在与服务器同步的问题,因此saveAsync函数存在延迟,目前没有任何解决方案,因此它可以工作,但需要稍等。您可以阅读更多有关此问题的信息

第一个问题:

outlook加载项在使用getAsync和setAsync函数时出现问题。当体内有一些图像时,就会出现问题。这是因为当你以Html格式获取主体,然后返回具有不同格式的主体时,图像仍然没有“上传”,src是错误的。 我使用Outlook rest API成功地解决了此问题。 所以解决方法是这样的:

  • 通过getAsync方法获取Html类型的正文消息。创建div 元素,并在div内设置返回正文消息
  • 要获取消息id,需要使用saveAsync函数将消息另存为草稿
  • 向Outlook rest发出请求 API您需要获取访问令牌,因此调用getCallbackTokenAsync函数并保存访问权 代币
  • 向outlook rest API发出Http请求以获取中存在的所有附件 信息
  • 找到图像的正确ID并将图像src替换为 从对outlook rest的请求中获得的映像的base-64 API
  • 最后,您可以使用SetAsync函数设置新的主体
  • 代码:


    希望它能帮助别人,祝你好运

    对于所有希望找到解决此问题的方法的人

    **在outlook web中,此解决方案运行良好,但在outlook Desktop中,存在与服务器同步的问题,因此saveAsync函数存在延迟,目前没有任何解决方案,因此它可以工作,但需要稍等。您可以阅读更多有关此问题的信息

    第一个问题:

    outlook加载项在使用getAsync和setAsync函数时出现问题。当体内有一些图像时,就会出现问题。这是因为当你以Html格式获取主体,然后返回具有不同格式的主体时,图像仍然没有“上传”,src是错误的。 我使用Outlook rest API成功地解决了此问题。 所以解决方法是这样的:

  • 通过getAsync方法获取Html类型的正文消息。创建div 元素,并在div内设置返回正文消息
  • 要获取消息id,需要使用saveAsync函数将消息另存为草稿
  • 向Outlook rest发出请求 API您需要获取访问令牌,因此调用getCallbackTokenAsync函数并保存访问权 代币
  • 向outlook rest API发出Http请求以获取中存在的所有附件 信息
  • 找到图像的正确ID并将图像src替换为 从对outlook rest的请求中获得的映像的base-64 API
  • 最后,您可以使用SetAsync函数设置新的主体
  • 代码:

    希望它能帮助别人,祝你好运

    addFileAttachmentAsync(uri, attachmentName, optionsopt, callback opt)
    
    var objectURL = URL.createObjectURL(f);
    
    item.body.getAsync(
    Office.CoercionType.Html,
    { asyncContext: "This is passed to the callback" },
    function callback(resultbody) {
      var bodyDiv = document.createElement('div');
      bodyDiv.innerHTML = content;
      Office.context.mailbox.item.saveAsync(
      function callback(result) {
        var myNewItemSaved = result.value;                                                                                            
        Office.context.mailbox.getCallbackTokenAsync({ isRest: true }, 
         function (result) {
           if (result.status === "succeeded") {  
              var accessToken = result.value;
              var itemId = ""; 
              if (Office.context.mailbox.diagnostics.hostName === 'OutlookIOS')
                 itemId = Office.context.mailbox.item.itemId; 
              else    
                itemId = Office.context.mailbox.convertToRestId(myNewItemSaved,
                         Office.MailboxEnums.RestVersion.v2_0); 
    
          var xhr3 = new XMLHttpRequest();
          xhr3.open("GET", "https://outlook.office.com/api/v2.0/me/messages/" +    itemId + "/attachments", true);
          xhr3.setRequestHeader("Content-type", "application/json"); 
          xhr3.setRequestHeader("Access-Control-Allow-Origin", "*");  
          xhr3.setRequestHeader("Authorization", "Bearer " + accessToken); 
          xhr3.send();
          xhr3.onreadystatechange = function () {  
          if (xhr3.readyState == 4) {
            if (xhr3.status == 200) {  
               var allImages = JSON.parse(xhr3.response).value;
               var isDesktop = false;
               var imgSrcId = bodyDiv.getElementsByTagName('img')[0].getAttribute("src");
               if (imgSrcId.indexOf("cid") != -1) //Outlook Desktop
                      isDesktop = true;
              for (var i = 0; i < allImages.length; i++) {
                  if (bodyDiv.getElementsByTagName('img')[i].getAttribute("src").indexOf("base64")!=-1)
                       continue;
                if (isDesktop)
                 imgSrcId = bodyDiv.getElementsByTagName('img')[i].getAttribute("src");
                 else
                   imgSrcId =  bodyDiv.getElementsByTagName('img'[i].getAttribute("originalsrc");                                                                                                                   
    
               imgSrcId = imgSrcId.substr(4, imgSrcId.length);
    
              var wantedImg;
              for (var j = 0; j < allImages.length; j++) {
                if ((allImages[j].ContentId).localeCompare(imgSrcId) != -1) {
                               wantedImg = allImages[j]; break;}
               }
           bodyDiv.getElementsByTagName('img')[i].src = 'data:' + wantedImg.ContentType + ';base64,' + wantedImg.ContentBytes;
            }
        }
       setAsync......
    
      }
      }}}})})};
    
    var attachment ={
         "@odata.type": "#Microsoft.OutlookServices.FileAttachment",
          "Name": "smile.png",
          "ContentBytes": "AAACFAMxLjAeKUDndY7EKF4P7QiWE7HgHLa7UiropGUTiDp5V07M0c5jaaTteauhzs0hOU+EOmVT0Lb6eSQ2MzgkCre/zCV9+kIB9PjWnOzoufau67J9PQdXapsOQSMcpt9X2QpcIjnl7H3sLu9iu2rqcvSjwhDnK6JygtghUB405EZHZ9LQcfJ1ZTYHylke2T9zbViq2BPqU/8IHZWsb/KQ/qzV4Jwv3NHnI583JvOuAtETJngh964edC4cU2IY6FkIWprksRw7d4fEQ/+3KbEyW0trIZm59jpTSV01/PhOI0RDKj1xI1Vr+lgMRZpOrYDfChWWWbByNzSXbIsTjHMU6GmQ5Cb09H3kv/2koFa5Pj2z8i+NGywYKw8ZSu3NVblM9I0EkQVLrxkM8gqyrDEtAobxPRxEzGTEXdnjws5UIiiGFBq3khuxejFGCNvUbmPM9guVZO0ccDe1FICTFHkrPlLZW/TvJYMou0HBrvH7s4taBHyZw5x03dhps+WG19D5na44vaVX2Vni6ZrrxfqFo7JTUpCJxCcPyoG7/nEWtJ/V/J+oXdypeapN9Agl6Q81WvCbzuyZgbLTfj6NXWDoliie069Hvk/k2lP+HyO7Iu5ffeRX2WWguwdfGXiNbqInrxn18tX+N7/KqWbRJv96tmijdCmCvsF9Lpr9k7QFKB93wuHfTuE6Qi2IVNBfzNBaz1iJYjY="
        } 
        var xhr4 = new XMLHttpRequest();             
        xhr4.open("POST", "https://outlook.office.com/api/v2.0/me/messages/" + itemId + "/attachments", true); 
        xhr4.setRequestHeader("Content-type", "application/json");
        xhr4.setRequestHeader("Access-Control-Allow-Origin", "*"); 
        xhr4.setRequestHeader("Authorization", "Bearer " + accessToken);
        xhr4.send(JSON.stringify(attachment));
        xhr4.onreadystatechange = function () {                                                                                                    
                       if (xhr4.readyState == 4) { 
                         if (xhr4.status == 200)
                               console.log("ok");
                         else
                              console.log(xhr4.response);
                        }};