我的工作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;
};