【问题标题】:Sending Email from Classic ASP on Windows 2012 R2 Server Core在 Windows 2012 R2 Server Core 上从经典 ASP 发送电子邮件
【发布时间】:2017-05-05 03:46:27
【问题描述】:

我们有一个刚刚从 Windows 2008 R2 迁移到 Windows 2012 R2 Core 的经典 ASP 应用程序。

显然,Windows 的核心版本不包含 cdosys 或 cdonts,因此我们的应用程序无法再发送电子邮件。

我能找到的大多数建议都建议使用 system.net.mail 发送电子邮件,这当然是一种 .NET 技术,而且我们使用的是经典的 ASP。

我们的系统上确实有 .NET,但我不确定经典 ASP 是否可以与 .NET 页面对话以发送电子邮件?

除了使用 Persits ASPEmail 之类的第 3 方 COM 实用程序之外,还有其他解决此问题的本地方法吗?

我们不想将服务器核心实例转换为完整版的 windows。那就是用火箭筒杀死一只蚂蚁。这只会影响我们代码中的两个地方,其他一切在核心上都可以正常工作。

【问题讨论】:

  • 我自己也遇到过这个问题,found the answer
  • AFAIK 第三方电子邮件组件(如 ASPEmail)只是 CDO 的包装器。我从来没有试过用这个来发送电子邮件,但应该可以使用 msxml 将数据发布到 asp.net webform。看到这个问题 - stackoverflow.com/questions/1463635/…
  • @John 在那个特定的问题中,问题略有不同,我发布了这个答案作为一种解决方法,但它从未真正直接回答过这个问题。事后看来,我应该发布一个问题并自己回答。

标签: email asp-classic cdonts


【解决方案1】:

不幸的是,CDONTS 不久前被 CDOSYS 取代。从 Windows Server 2008 迁移到 Windows Server 2012 时,我遇到了完全相同的问题,但设法解决了 find a fix

它涉及从 Windows Server 2008 服务器获取 cdonts.dll 文件的副本并将其添加到 Windows Server 2012 服务器,然后将其注册到相关的 COM 子系统,而无需更改代码或安装第 3 方库。

希望相同的方法适用于 Core,但我还没有测试过。

【讨论】:

  • 我没有尝试过 CDONTS,但我确实尝试过使用 CDOSYS 的技巧,但它不起作用 :( 我想我可以试试 CDONTS 咯咯笑。
  • @brad 我从未尝试过仅使用 CDOSYS 的 CDONTS,这取决于如何在代码中实例化 CDO 对象。如果是Server.CreateObject("CDONTS.NewMail"),它的cdonts.dll 需要复制和注册。如果它不起作用,可能是由于在 32 位注册表中注册 dll 时 IIS 中的应用程序池未启用 32 位。可以是雷区,有注册COM指南here
  • @Lankymart - CDONTS 是否真的适用于当前版本的 IIS?根据我使用 IIS7 及更高版本的经验,即使 SMTP 服务器在同一台机器上,CDOSYS 也总是需要一个配置部分。这让我怀疑 CDONTS 在相同的环境中将毫无用处。
  • @John 这只是 COM,如果你能找到 DLL 并注册它,是的,它可以工作。我在 Windows Server 2012 上运行它以支持使用它的旧 ASP 站点。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-17
  • 1970-01-01
  • 2012-05-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多