我不明白为什么我看到的每个例子都有来自microsoft的架构名称空间。它是为了什么?是不是真的通过查看Microsoft服务器来发送内容?
How do I use CDO with Exchange with vbscript
我会发布我的代码,但它和所有示例都有相同的东西:
objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/sendusing")= cdoSendUsingPort
我不想把微软架构放在那里。我只想将它发送到我的Exchange或SMTP服务器。感谢。
答案 0 :(得分:1)
命名空间就在那里,因为它们唯一地标识了对象中的属性;
适用于Windows 2000的Microsoft CDO使用统一资源 用于限定或限定字段名称及其语义的标识符(URI) 定义。通过Fields集合访问的每个字段都是 由名称空间前缀和本地名称组成。名称空间前缀 是一个URI引用,用于限定或限定语义定义 财产。例如,消息的主题字段有两个 表示:一个使用非编码的非US-ASCII字符编码 RFC 1522中定义的机制,以及这些字符所在的另一个机制 解码为原生的UNICODE字符。通过使用名称空间,可以 确定“主题”时的语义定义 请求消息。在这种情况下,定义了主题字段 在urn:schemas:mailheader:namespace被定义为 US-ASCII字符串的字段值,以及定义的主题字段 在urn中:schemas:httpmail:namespace是本机的UNICODE 版本
它与XML Namespaces几乎完全相同,甚至是C#等语言中的命名空间
他们实际上并没有连接到微软;实际上,尝试在浏览器中键入URL,您将收到404错误。
这只是设置您需要设置的属性的相当不优雅的语法,以便连接到您的交换服务器。
例如,要设置代码应连接到的服务器以发送邮件,请设置属性smtpserver
。在内部,为了达到此property,程序集会将其映射到URI http://schemas.microsoft.com/cdo/configuration/smtpserver
发送邮件的C#组件可能会要求您设置SmtpMail.Server
。但是,请记住,要创建SmtpMail,您必须查看名称空间System.Web.Mail
- 所以该属性的完全限定路径是System.Web.Mail.SmtpMail.Server
然而,这里的语言更加优雅 - 使用语句允许我们在创建对象的上下文中,这减少了键入的数量。请记住,如果您真的想,在C#中,您可以这样做:
System.Web.Mail.SmtpServer mailServer = new System.Web.Mail.SmtpServer();
哪个更详细。
在我看来,URI语法是笨拙的,但是,当时,它是针对唯一区分具有相同名称的事物的问题的建议解决方案,这可能意味着不同的东西。有些人用它。很多人没有。请记住,这段代码已有十多年了!