2

我不明白为什么我看到的每个示例都有来自微软的命名空间架构。它是干什么用的?它真的是通过查看 Microsoft 服务器发送的东西吗?

如何将 CDO 与 Exchange 与 vbscript 一起使用

我会发布我的代码,但它和所有示例都有相同的东西:

objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/sendusing")= cdoSendUsingPort

我不想把微软模式放在那里。我只想将它发送到我的 Exchange 或 SMTP 服务器。谢谢。

4

1 回答 1

1

命名空间之所以存在,是因为它们唯一地标识了对象中的属性;

Microsoft CDO for Windows 2000 使用统一资源标识符 (URI) 来限定或限定字段名称及其语义定义。通过 Fields 集合访问的每个字段都由命名空间前缀和本地名称组成。命名空间前缀是一个 URI 引用,用于限定或限定属性的语义定义。例如,消息的主题字段有两种表示形式:一种是使用 RFC 1522 中定义的机制编码的非 US-ASCII 字符,另一种是这些字符被解码为本机的 UNICODE 字符。通过使用名称空间,当请求消息的“主题”时,可以识别要使用的语义定义。在这种情况下,urn:schemas:mailheader 中定义的主题字段:

来自MSDN 文章字段

它与XML Namespaces甚至C#等语言中的命名空间几乎完全相同

他们实际上根本没有连接到微软。实际上,尝试在浏览器中输入 URL,您将收到 404 错误。

这只是设置您需要设置的属性以连接到您的交换服务器的相当不雅的语法。

例如,要设置您的代码应该连接到的服务器以发送邮件,您需要设置属性smtpserver。在内部,要访问此属性,程序集会将其映射到 URIhttp://schemas.microsoft.com/cdo/configuration/smtpserver

用于发送邮件的 AC# 组件可能会要求您设置SmtpMail.Server. 但是,请记住,要创建 SmtpMail,您必须查看命名空间System.Web.Mail- 所以属性的完全限定路径是System.Web.Mail.SmtpMail.ServerHere,但是,语言要优雅得多 - using 语句允许我们在上下文中创建对象,这减少了打字量。请记住,如果你真的想要,在 C# 中,你可以这样做:

System.Web.Mail.SmtpServer mailServer = new System.Web.Mail.SmtpServer();

哪个更冗长。

在我看来,URI 语法很笨拙,但是,在当时,它是一个提议的解决方案,用于解决唯一区分具有相同名称的事物可能意味着不同的事物的问题。有些人用过。很多人没有。请记住,这段代码已有十多年的历史了!

于 2012-07-19T20:32:29.173 回答