65.9K
CodeProject 正在变化。 阅读更多。
Home

使用 ASP 在 Exchange 中验证电子邮件地址

starIconstarIconstarIconemptyStarIconemptyStarIcon

3.00/5 (5投票s)

2004年10月29日

3分钟阅读

viewsIcon

70988

downloadIcon

640

本文指出了如何使用 ASP 在 Exchange 中验证电子邮件地址。

引言

通过 ADSI(Active Directory Service Interface),微软提供了一个 COM 组件,用于访问各种目录服务。ADSI 是 Windows 2000 的一个组件。

您可以将 ADSI 视为各种目录服务的 ODBC 接口。在网络中,目录服务管理用户和功能,例如计算机、打印机、用户和服务。

目录服务的结构是分层的,可以看作是一棵目录树:有一个根,您可以从那里开始访问其他条目。根可以包含容器(结点)和叶子。容器本身可以包含其他条目,而叶子标记目录树中分支的末端。目录中的每个条目都描述一个对象并具有特定的属性。这可以用 Windows 文件系统来说明:硬盘C: 是根,目录/文件夹是容器,文件是叶子。

ADSI 支持的目录系统的例子有:WinNT(访问 Windows NT)、GC(Windows 2000 全局目录)、IIS(Internet 信息服务器元数据库)、NWCOMPAT(Novell NetWare 3.x)、NDS(Novell NetWare 4.x)和 LDAP 目录。

在此上下文中,将特别考虑目录服务 LDAP。LDAP(轻量级目录访问协议)于 90 年代初在密歇根大学开发,可以更轻松地访问 X.500 协议的目录服务。LDAP 基于 TCP/IP 并使用端口号 389。越来越多的公司将 LDAP 集成到他们的产品中,例如微软的 Exchange、Windows 2000 和 Site Server。

在 Exchange LDAP 目录中搜索

使用 GetObject 方法,您可以访问 LDAP 目录服务中的已知对象或容器,从而显示地址簿。

但是,如果要搜索用户该怎么办?

在这种情况下,ADSI 通过 OLE-DB 提供对目录条目的访问。这使得进行查询成为可能。注意:通过 OLE-DB 的访问仅为读取访问。条目无法修改。

LDAP 查询需要以下信息

  • 目录服务层次结构的起始对象。
  • 搜索标准。
  • 应返回的找到对象的属性。
  • 基于起始对象的搜索深度。

LDAP 查询的语法是

<LDAP://Servername/Startobject> ; search criteria ; 
               returned attributes ; search depth

搜索标准的一个特征是用于定义搜索标准的运算符。

运算符

  • & - 逻辑 “and”(与)
  • | - 逻辑 “or”(或)
  • ! - 逻辑 “not”(非)
  • = - 等于
  • > - 大于
  • < - 小于

位于条件之前。

例如: (|(givenname=first name)(sn=surname*))。

星号符号 (*) 可以用作多个符号的占位符。

一般来说,Exchange 服务器只支持在右侧使用星号符号。必须首先在 Exchange 服务器 XXXXX 下激活在左侧使用星号符号。

有三种可能的搜索深度:BASE(仅基本级别)、ONELEVEL(基本级别和第一子级别)和 SUBTREE(基本级别和所有后续子级别)。

示例:验证 Exchange 中的电子邮件地址

首先,与数据库建立 ADO 连接

set oConn = CreateObject("ADODB.Connection")
set oCommand = CreateObject("ADODB.Command")

oConn.Provider = "ADsDSOObject"
oConn.Open "Ads Provider"

然后进行 LDAP 查询并通过 ADO 发送到数据库

strServerName = "Exchange01"    
strEmail = Request.Form("email")

strQuery = "<LDAP://" & strServername & _
           ">;(&(objectClass=*)(mail=" & strEmail & _
           "));ADsPath,sn,givenname,mail,uid;subtree"

oCommand.CommandText = strQuery
set oRS = oCommand.Execute

如果查询成功,结果将在 RecordSet 对象中返回。 然后可以使用已知的 ADO 方法显示结果

<%
if not oRS.eof then
   response.write "This email adress is valid."
else
   Response.Write "This email adress is not valid." 
end if
%>

Exchange LDAP 中用户属性的调查

使用此方法,您还可以验证分配给每个用户的其他用户属性

  • 名称
  • 邮件
  • cn
  • sn
  • givenname
  • member
  • department
  • title
  • uid
  • company
  • telephonenumber
  • facsimiletelephonenumber
  • postaladdress
  • homepostaladdress
  • physicalDeliveryOfficeName

注意

您必须确保 InternetUser 具有访问 Exchange 的权限。

摘要

如果您将这些组件放在一起并添加搜索掩码,那么您可以为 Exchange 地址簿获得一个简单的搜索可能性,例如,对于 Intranet。

下载演示项目,您就会看到它是如何工作的!

© . All rights reserved.