我遇到问题添加文件附件异步。我有 2 个数组:嵌入文件(包含将附加到正文中的文件名)和附件(包含将作为附件的文件名)。我有2个for为每个数组运行循环,它们应该对数组中的每个文件向 Exchange Server 发出 GET 请求并获取二进制文件。
for (var i = 0; i < embeddedFiles.length; i++) {
var attachmentName = (new Date()).getTime() + ".png";
var count = 0;
var options = { isInline: true, ContentId: attachmentName, asyncContext: { UniqueName: attachmentName } };
var attachmentURL = "http://" + document.location.hostname + document.location.port + '/MailForms/api/GetAttachment?' + 'AttId=' + embeddedFiles[i] + '&' + 'MwToken=' + token + '&' + 'ReqId=' + data.ReqId + '&' + 'userSmtp=' + smtp;
Office.context.mailbox.item.addFileAttachmentAsync(
attachmentURL,
attachmentName,
options,
function (asyncResult) {
if (asyncResult.status == Office.AsyncResultStatus.Failed) {
app.showNotification('Failed to add attachment', asyncResult.error.message);
}
else {
var szCID = asyncResult.asyncContext.UniqueName;
//var szAddBodyData = "<br><div><img height=150 width=150 src='cid:" + szCID + "'></div><br>"
var bizimCigid = "cid:" + szCID;
var index = "" + count;
var oldsource = oBody.find('.mw-images')[index].attributes[1].value;
oldsource = bizimCigid;
//imagesource.replaceWith(bizimCigid);
//Office.context.mailbox.item.body.setSelectedDataAsync(szAddBodyData, { coercionType: Office.CoercionType.Html });
oBody.find('.mw-images')[index].attributes[1].value = oldsource;
//Office.context.mailbox.item.body.setSelectedDataAsync({ coercionType: Office.CoercionType.Html });
viewModel.updateComposeFormLast(subject, oBody["0"].innerHTML);
count = count + 1;
}
}
);
for (var i = 0; i < attachments.length; i++) {
var attachmentURL = "http://" + document.location.hostname + document.location.port + '/MailForms/api/GetAttachment?' + 'AttId=' + attachments[i] + '&' + 'MwToken=' + token + '&' + 'ReqId=' + data.ReqId + '&' + 'userSmtp=' + smtp;
Office.context.mailbox.item.addFileAttachmentAsync(
attachmentURL,
attachments[i],
{
'asyncContext': {}
},
viewModel.getAttachmentsContent
);
}
上面的代码接受查询字符串并调用添加文件附件异步方法。网址没有任何问题。我在浏览器上尝试过它们,它们确实根据自定义 URL 获取了实际文件。获取附件内容是一个刚刚调用的方法console.log(“废话”)。
添加单个附件或内嵌图像时效果很好。但我需要添加多个附件和多个嵌入图像。这是我尝试过的事情:
- 只需添加一个附件 -works
- 只需添加一个内嵌图像 -works
- 添加图像和附件 -works但它很慢
- 多个附件和内嵌图像 -不起作用 .
我收到的错误:
error OSF.DDA.Error code 9002 message "There was an internal format error." name : "InternalFormatError"*
在我看来,当您执行相同格式的多个请求时,它就会崩溃。但我不知道为什么。
有任何想法吗?