通过Javascript和EWS在Outlook缓存模式下设置HTML



我的工作Outlook环境正在从联机(连续连接(更改为缓存模式,这破坏了Outlook加载项的桌面组件,该加载项旨在保存草稿电子邮件,然后将其转发给内部安全检查。

我的原始代码会保存草稿async,然后使用Id和change键转发它。在缓存模式下,在帐户与Exchange同步之前,没有Id。

现在损坏的代码(在缓存模式下不工作(

//Save current item as draft
mailForward.SaveDraftIfNecessary = function SaveDraftIfNecessary() {
if (_item_id == null || _item_id == undefined) {
Office.context.mailbox.item.saveAsync(function (asyncResult) {
if (asyncResult.error) {
app.showNotification(_appName, "Error: " + asyncResult.error.message);
}
else {
_item_id = asyncResult.value;
}
});
}
};

我已经能够编写代码来复制邮件并发送它,但我需要能够将草稿正文插入到新的电子邮件正文中,但它不接受它。它不适用于文本或HTML。

获取正文类型和文本的代码如下:

item.body.getTypeAsync(
function (asyncResultGet) {
if (asyncResultGet.status === Office.AsyncResultStatus.Failed) {
statusUpdate("icon16", asyncResultGet.error.message);
stopSpinner();
}
else {
bodyType = asyncResultGet.value;
item.body.getAsync(bodyType,
function (asyncResultGet) {
if (asyncResultGet.status === Office.AsyncResultStatus.Failed) {
statusUpdate("icon16", asyncResultGet.error.message);
stopSpinner();
}
else {
bodyText = asyncResultGet.value;

我试图用来插入正文的SOAP。我也尝试过t:NewBodyContent而不是t:Body:

'               <t:Message>' +
'                   <t:Subject>' + _subject + '</t:Subject>' +
'                   <t:Body BodyType="'+ _bodyType +'">' + _bodyText + '</t:Body>' +
'                   <t:ToRecipients>' + _adddressesSoap + '</t:ToRecipients>' +
'               </t:Message>' +

我的问题是编码。我知道这可能是个问题,但直到我找到这个链接才测试出来:

从输入字段读取属性时丢失HTML编码

我使用的代码是:

var htmlEncode = function htmlEncode(s) {
var ntable = {
"&": "amp",
"<": "lt",
">": "gt",
""": "quot"
};
s = s.replace(/[&<>"]/g, function (ch) {
return "&" + ntable[ch] + ";";
});
s = s.replace(/[^ -x7e]/g, function (ch) {
return "&#" + ch.charCodeAt(0).toString() + ";";
});
return s;
};

最新更新