添加附件到ActiveX Outlook(2016)邮件

时间:2017-07-06 14:09:48

标签: javascript email outlook sharepoint-online activexobject

上下文

SharePoint Online 环境中的文档库中的每个文档集的主页上都有一个按钮。单击该按钮时,将打开一个Outlook窗口,其中包含标题和正文集,文档集中的所有文件都应作为附件添加。

代码

这是我到目前为止的代码:

var olApp = new ActiveXObject("Outlook.Application");
var olNs = olApp.GetNameSpace("MAPI");
var olItem = olApp.CreateItem(0);

var signature = olItem.HTMLBody;
signature.Importance = 2;

olItem.To = "";
olItem.Cc = "";
olItem.Bcc = "";
olItem.Subject = "Pre filled title";
olItem.HTMLBody = 
        "<span style='font-size:11pt;'>" +
        "<p>Pre filled body</p>" +
        "</span>";
olItem.HTMLBody += signature;

olItem.Display();
olItem.GetInspector.WindowState = 2;

var docUrl = "https://path_to_site/Dossiers/13245_kort titel/New Microsoft Word Document.docx";
olItem.Attachments.Add(docUrl);

问题

当我运行此代码时,将打开一个Outlook窗口,其中所有内容都已正确设置。但是在添加附件的行上,我得到了非常模糊的错误消息:

  

SCRIPT8:操作失败。

我认为它可能是网址中的空格所以我替换了它们:

docUrl = docUrl.replace(/ /g, "%20");

也没有工作(同样的错误)并且提供这样的所有参数也不起作用:

olItem.Attachments.Add(docUrl, 1, 1, "NewDocument");

将路径传递到本地文件(例如C:/folder/file.txt)或公开可用的网址 工作。所以我的猜测是它与权限或安全性有关。有人知道如何解决这个问题吗?

PS:我知道使用ActiveX控件不是理想的工作方式(浏览器限制,安全考虑......)但情况就是这样,而不是我的改变力量。

1 个答案:

答案 0 :(得分:0)

您无法将网址传递给OOM中的MailItem.Attachments.Add(它在RDOMail.Attachments.Add的{​​{3}}中有效。 Outlook对象模型仅允许本地文件的完全限定路径或指向另一项(例如MailItem)的指针。