2016-08-09 78 views
1

ich etwas, um den Körper von Outlook anhängen müssen mit einem Outlook Mail add-inOutlook Mail-Add-In-API funktioniert anders im Web und Outlook-Client

Hier ist, wie ich es tun

function getBody(cb) { 
    Office.context.mailbox.item.body.getAsync(
     "html", 
     { asyncContext: "This is passed to the callback" }, 
     function (result) { 

      cb(result.value); 

     }); 
} 
function setBody(content, cb) { 
    Office.context.mailbox.item.body.setAsync(
    content, 
    { coercionType: Office.CoercionType.Html }, 
    function (result2) { 
     cb(result2); 
    }); 
} 

Hier die ist Anruf

getBody(function (body) { 
    setBody(body + " appended", function (r) { 
     log(JSON.stringify(r)); 
    }); 
}); 

Im Outlook Web funktioniert das gut. Aber im Desktop-Client (Outlook 2016) funktioniert das nicht.

Dies ist, was für den Rückruf resultiert aus der Desktop-Version

{"value":"","status":"succeeded"} 

Dies ist, was bekommt für den Rückruf resultiert aus der Web-Version

{"value":null,"status":"succeeded"} 

Bitte um Hilfe zu bekommen.

+0

Hallo, Ich habe gerade versucht, diesen Code in der aktuellen Version von Outlook 2016 und konnte das Problem nicht repro: Office.context.mailbox.item.body.getAsync ("text", Funktion (ar) { \t var body = ar.value; \t Office.context.mailbox.item.body.setAsync (body + "angehängt"); }); sind Sie immer noch in der Lage, es zu reproduzieren? Welche Build von Outlook 2016 laufen Sie? – AndrewS

+0

Hm .. Es gibt einen Unterschied. ..getAsync ("Text", .. ist nicht das, was ich brauche. Ich brauche HTML-formatierten Mail-Body-Inhalt. –

Antwort

1

Eine Lösung gefunden, ich habe nur einen Text an das Ende einer HTML-Zeichenfolge angefügt, die eine schmutzige Sache zu tun ist.

function FormatBody(bodyContent, extraContent, callback) { 
    var domParser = new DOMParser(); 
    var parsedHtml = domParser.parseFromString(bodyContent, "text/html"); 

    $("body", parsedHtml).append("<div>" + extraContent + "</div>"); 
    var changedString = (new XMLSerializer()).serializeToString(parsedHtml); 

    callback(changedString); 
} 

Parsed die HTML-Zeichenfolge und fügte das Tag ich wollte. Es wurde gelöst. :)

+0

Wenn Sie Ihre eigene Antwort akzeptieren, wird es klarer zu Menschen lesen diese n Zukunft, was die Lösung ist – Mawg