设置 CDO.Message 选项时使用的 f(x) = y JScript 习惯用法的 JavaScript 友好替代方案

StackOverflow https://stackoverflow.com/questions/468089

我有一个用 JScript 编写的 ASP 页,它使用 CDO.Message 发送电子邮件。为了指定 SMTP 服务器(和其他选项),我正在执行以下操作:

mail.Configuration.Fields.Item(
    "http://schemas.microsoft.com/cdo/configuration/smtpserver") =
    "smtp.example.com";

现在,问题来了。我将此代码放在一个独立的包含文件中,并将其作为 JavaScript 包含在 HTML 页面中,以便我可以在浏览器中对其运行单元测试(使用 JsUnit 等)。我有 JavaScript 模拟对象(服务器、请求等),它们为包含的 JScript 代码创建模拟 ASP 环境。我剩下的唯一问题是 CDO.Message 选项设置。自从 f(x) = y 上述代码摘录中使用的语法不是有效的 JavaScript(无效的左侧操作数),我无法在浏览器中运行这段代码(按原样)。目前,我只是在单元测试中使用一个条件来绕过它,以检测环境是否真正是 ASP。

我认为 JavaScript 没有解决方法。我正在寻找一种替代语法(可能以不同的方式使用 ActiveX 接口)来设置 CDO.Message 选项,该选项在语法上也是有效的 JavaScript。

有帮助吗?

解决方案

我在查看 C++ 代码示例时找到了答案 http://msdn.microsoft.com/en-us/library/ms526318(EXCHG.10).aspx.

解决方案是显式分配给 Value 财产:

mail.Configuration.Fields.Item(
    "http://schemas.microsoft.com/cdo/configuration/smtpserver").Value =
    "smtp.example.com";

这样,上面的代码就是有效的 JavaScript,可以使用模拟配置对象进行测试。

其他提示

我已经编写服务器端JavaScript时为IIS,这f(x) = y语法是失败在我的IDE的语法检查器已经有同样的问题。我发现的有用的解决方案是JScript的条件注释如下所示:

f(x)/*@cc_on@if(0)*/[0]/*@end@*/ = y;

它把下标索引[0]上的端部的除了在微软的JScript引擎运行时。但是,无可否认我的解决方案是一个有点哈克。我认为,在大多数情况下,你的是更清洁,十分感谢分享。

-Simon

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top