ActiveX - 自动化服务器无法创建对象

11

我有一个网页,需要从中发送一封邮件。我需要在浏览器中发送一份大的邮件。因为内容超出了查询字符串的限制,所以我需要依赖Active X。我想通过Outlook发送这封邮件。为了实现这个目标,我编写了以下代码:

try {
  var to = "";
  var cc = "";
  var subject = "Action Required";
  var body = GenerateEmailBody();

  var outlook = new ActiveXObject('Outlook.Application');
  var outlookNamespace = outlook.GetNameSpace('MAPI');

  var message = outlookNamespace.CreateItem(0);
  message.Display();
  message.To = to;
  message.Subject = subject;
  message.Body = body;
  message.GetInspector.WindowState = 2;
} catch (err) {
  alert("Unable to send email. " + err);
}

当我执行这段代码时,我会得到以下错误:

ReferenceError: ActiveXObject is not defined 

我做错了什么?

谢谢!


7
我有点困惑:问题的标题是“自动化服务器无法创建对象”,但在问题中你说错误是“ActiveXObject未定义”……那到底是哪一个? - Martijn
5个回答

16

"自动化服务器无法创建对象"错误表示您的浏览器安全设置过低,无法运行 ActiveX 控件。您需要将页面移动到受信任站点列表中并降低 ActiveX 设置以便其可以运行。

个人建议尽量避免使用 ActiveX,因为它会将您锁定在仅限于 IE 的世界中。这也是为什么我们仍然有人被困在 IE6 中的原因。

如果您只是想预加载邮件消息,则可以使用 mailto:


2
mailto的问题在于它受限于URL的大小。我的内容长度超过了URL允许的限制。 - user70192

11

a) 转到“工具”->“Internet选项”

b) 选择安全选项卡

c) 点击“受信任的站点”(或“本地Intranet”,具体取决于您的站点是否受信任)

d) 点击“自定义级别”

e) 确保“初始化和脚本ActiveX控件未标记为安全脚本”已启用 - 这在滚动条的1/4处的ActiveX控件和插件部分下。

点击确定,确定。

完成后,请清除浏览器的Cookie和缓存。关闭所有浏览器会话。重新打开IE以启动您的站点。

尝试禁用步骤(e)中的设置,看看问题是否会再次出现 - 这应该可以更好地解决问题。

来源:IE9,在使用CertEnroll.dll时出现自动化服务器无法创建对象错误


2
在使用CertEnroll.dll时,IE9出现“Automation server can't create object”错误 - quintin
1
IE9自动化服务器无法创建对象错误,同时使用CertEnroll.dll。 - wobsoriano

2

您不应该在浏览器内创建“Outlook.Application”。这可能有以下几个原因:

  • 它没有标记为初始化安全或脚本安全
  • 它被设置了kill bit

您可以使用POST将电子邮件发送到服务器吗?


1

ActiveXObject 对象仅在 Internet Explorer 上可用,并且根据您的页面所在的区域(本地、内部网络或互联网)可能会受到限制。

您想从将托管在互联网上的网页发送电子邮件吗?那么除了mailto链接之外,您唯一的选择是从服务器发送电子邮件。如何执行完全取决于您的服务器端技术。


0

启用方法,工具菜单 -> Internet 选项 -> 安全 -> 自定义级别 -> "在 IE 上初始化和脚本 ActiveX"


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接