Wrox Home  
Search P2P Archive for: Go

  Return to Index  

asp_cdo thread: Resolving a name from a NT Login


Message #1 by "Michael Gorsuch" <voodoo_bluesman@h...> on Fri, 10 Aug 2001 16:03:52
Greetings everyone, 



I'm fairly new to CDO and its capabilities, but I do have a firm grasp on 

ASP and VB.  What I need to know is whether it is possible for you to 

resolve Exchange information (First name, last name, department, etc) via 

an NT login.  If this is possible, could anybody provide some simple code 

to show me the concepts?



I appreciate the help, 



Michael
Message #2 by Eli Schilling <eschilli@t...> on Fri, 10 Aug 2001 09:08:04 -0700
Here is the code to display all of a persons info from exchange.  Actually,

it lists everyone in the GAL.  You can modify this to make it searchable or

what not:



<%@ LANGUAGE="VBSCRIPT"%>

<HTML>

<HEAD>

<TITLE>Employee EMail List</TITLE>

<base target="_self">

</HEAD>

<BODY bgcolor="#FAF5D7" text="#000000" link="#0000FF" vlink="#0000FF"

alink="#FF0000"><font face="Arial, Arial, Helvetica">

<%

CONST adChar = 129

Const adUseClient = 3

Const adOpenKeyset = 1



CONST CdoPR_GIVEN_NAME = &H3A06001E 'First Name

CONST CdoPR_INITIALS = &H3A0A001E 'Initials

CONST CdoPR_SURNAME = &H3A11001E 'Last Name

CONST CdoPR_DISPLAY_NAME = &H3001001E 'Display Name

CONST CdoPR_ACCOUNT = &H3A00001E 'Alias

CONST CdoPR_TITLE = &H3A17001E 'Title

CONST CdoPR_COMPANY_NAME = &H3A16001E 'Company

CONST CdoPR_OFFICE_LOCATION = &H3A19001E 'Office

CONST CdoPR_HOME_TELEPHONE_NUMBER = &H3A09001E 'Phone

CONST CdoPR_HOME2_TELEPHONE_NUMBER = &H3A2F001E 'Home Phone 2

CONST CdoPR_HOME_FAX_NUMBER = &H3A25001E 'Home Fax

CONST CdoPR_HOME_ADDRESS_STREET = &H3A5D001E 'Address

CONST CdoPR_HOME_ADDRESS_CITY = &H3A59001E 'City

CONST CdoPR_HOME_ADDRESS_STATE_OR_PROVINCE = &H3A5C001E 'State

CONST CdoPR_HOME_ADDRESS_POSTAL_CODE = &H3A5B001E 'Zip

CONST CdoPR_HOME_ADDRESS_COUNTRY = &H3A5A001E 'Country

CONST CdoPR_MANAGER_NAME = &H3A4E001E 'Manager

CONST CdoPR_OFFICE_TELEPHONE_NUMBER = &H3A08001E 'Business Phone

CONST CdoPR_OFFICE2_TELEPHONE_NUMBER = &H3A1B001E 'Business Phone 2

CONST CdoPR_BUSINESS_FAX_NUMBER = &H3A24001E 'Fax

CONST CdoPR_ASSISTANT = &H3A30001E 'Assistant

CONST CdoPR_ASSISTANT_TELEPHONE_NUMBER = &H3A2E001E 'Asistant Phone Number

CONST CdoPR_MOBILE_TELEPHONE_NUMBER = &H3A1C001E 'Mobile

CONST CdoPR_PAGER_TELEPHONE_NUMBER = &H3A21001E 'Pager



CONST CdoPR_DEPARTMENT = &H3A18001E 'Department Name



Dim objSession

Dim objAddrEntries

Dim objAddressEntry

Dim strProfileInfo

Set objName = request.form("nname")



strUsername = Request.ServerVariables("Logon_User")

strProfileInfo = "/cn=Configuration/cn=Servers/cn=rt-apps" & vbLf & vblf &

strUsername

Set objSession = CreateObject("MAPI.Session")

objSession.Logon "", "", False, True, 0, True, "Exchange_Server_Name" & vbLf

& strProfileInfo

Set objAddrEntries = objSession.AddressLists("Global Address

List").AddressEntries



On Error Resume Next 'Required, because, if an item is missing, an

'error returns that stops the process.



' Create an ADO recordset to sort the data



set oRSTemp = CreateObject("ADODB.Recordset")

oRSTemp.Fields.Append "PR_DISPLAY_NAME", adChar, 256

oRSTemp.Fields.Append "PR_GIVEN_NAME", adChar, 256

oRSTemp.Fields.Append "PR_SURNAME", adChar, 256

oRSTemp.Fields.Append "PR_OFFICE_TELEPHONE_NUMBER", adChar, 256

oRSTemp.Fields.Append "PR_DEPARTMENT", adChar, 256

oRSTemp.Fields.Append "PR_TITLE", adChar, 256

oRSTemp.Fields.Append "PR_ACCOUNT", adChar, 256

oRSTemp.CursorLocation = adUseClient

oRSTemp.CursorType = adOpenKeyset

oRSTemp.Open



' Sort our data

order = Request.QueryString("Order")

if order = 1 then

oRSTemp.Sort = "PR_SURNAME, PR_GIVEN_NAME ASC"

elseif order = 2 then

oRSTemp.Sort = "PR_OFFICE_TELEPHONE_NUMBER ASC"

elseif order = 3 then

oRSTemp.Sort = "PR_TITLE ASC"

elseif order = 4 then

oRSTemp.Sort = "PR_ACCOUNT ASC"

elseif order = 5 then

oRSTemp.Sort = "PR_DEPARTMENT ASC"

else

oRSTemp.Sort = "PR_DISPLAY_NAME ASC"

end if



' Copy in the data

For Each objAddressEntry In objAddrEntries

add = False

add = Not (IsNull(objAddressEntry.Fields(CdoPR_SURNAME).Value) Or

IsNull(objAddressEntry.Fields(CdoPR_GIVEN_NAME).Value))

If add Then

oRSTemp.AddNew

oRSTemp("PR_DISPLAY_NAME").Value 

objAddressEntry.Fields(CdoPR_DISPLAY_NAME).Value

oRSTemp("PR_GIVEN_NAME").Value 

objAddressEntry.Fields(CdoPR_GIVEN_NAME).Value

oRSTemp("PR_SURNAME").Value = objAddressEntry.Fields(CdoPR_SURNAME).Value

oRSTemp("PR_OFFICE_TELEPHONE_NUMBER").Value 

objAddressEntry.Fields(CdoPR_OFFICE_TELEPHONE_NUMBER).Value

oRSTemp("PR_DEPARTMENT").Value 

objAddressEntry.Fields(CdoPR_DEPARTMENT).Value

oRSTemp("PR_TITLE").Value = objAddressEntry.Fields(CdoPR_TITLE).Value

oRSTemp("PR_ACCOUNT").Value = objAddressEntry.Fields(CdoPR_ACCOUNT).Value

oRSTemp.Update

End If

Next



' Now, display the records

oRSTemp.MoveFirst

%>

</font><TABLE BORDER=0 cellspacing="0" width="100%">

<TR bgcolor="#000080" height="16">

 <TH valign="middle" height="32" colspan="4">

 <font face="Arial, Arial, Helvetica"><b>

 <font size="4" face="Arial, Helvetica" color="#FFFFFF">

 Employee List</font></b></font></TH>

</TR>

<TR bgcolor="#000080" height="16">

 <TH valign="middle" height="48">

  <font face="Arial, Arial, Helvetica">

  <A HREF="OutAddBook.asp?Order=0">

  <font color="#FFFF00" face="Arial, Helvetica">First</font></A>

  <font color="#FFFF00" face="Arial, Helvetica">&</font>

  <A HREF="OutAddBook.asp?Order=1">

  <font color="#FFFF00" face="Arial, Helvetica">Last</font></A>

  <font color="#FFFF00" face="Arial, Helvetica">Name</font></font>

 </TH>



 <TH valign="middle" height="48"><font face="Arial, Arial, Helvetica">

  <A HREF="OutAddBook.asp?Order=2"><font color="#FFFF00" face="Arial,

Helvetica">Ext</font></A>

  </font>

 </TH>

 

 <TH valign="middle" height="48"><font face="Arial, Arial, Helvetica">

  <A HREF="OutAddBook.asp?Order=5"><font face="Arial, Helvetica"

color="#FFFF00">

   Department, </font></A>

  <A HREF="OutAddBook.asp?Order=3"><font face="Arial, Helvetica"

color="#FFFF00">

   Title</font></A></font>

 </TH>



 <TH valign="middle" height="48"><font face="Arial, Arial, Helvetica">

  <A HREF="OutAddBook.asp?Order=4"><font color="#FFFF00" face="Arial,

Helvetica">

   Email Address</font></A></font></TH>

 </TR>



<%

While Not oRSTemp.EOF

mailAddr = oRSTemp("PR_ACCOUNT").Value & "@domain.com"

%>



<TR>

 <TD><font face="Arial, Arial, Helvetica">

 <font face="Arial, Helvetica">

 <font size="2">

  <% Response.Write oRSTemp("PR_DISPLAY_NAME").Value & " " %>

 </font>

 </font>

 </font></TD>

 <TD><font face="Arial, Arial, Helvetica">

 <font face="Arial, Helvetica">

 <font size="2">

  <% Response.Write oRSTemp("PR_OFFICE_TELEPHONE_NUMBER").Value & " " %>

 </font>

 </font>

 </font></TD>

 <TD><font face="Arial, Arial, Helvetica">

 <font face="Arial, Helvetica">

 <font size="2">



<%

 foo = ""

 If Not IsNull(oRSTemp("PR_DEPARTMENT").Value) Then

 foo = oRSTemp("PR_DEPARTMENT").Value

 End If

 If Not IsNull(oRSTemp("PR_TITLE").Value) Then

 if Len(foo) > 0 then foo = foo + ", "

 foo = foo & oRSTemp("PR_TITLE").Value

 End If

 Response.Write foo

%>

</font>

</font>

</font></TD>

<TD><font face="Arial, Arial, Helvetica">

<font face="Arial, Helvetica">

<font size="2">

<% Response.Write("<A href='mailto:" & mailAddr) & "'>" & mailAddr & "</A>"

%>

</font>

</font>

</font></TD>

</TR>

<%

oRSTemp.MoveNext

Wend



objSession.Logoff

Set objFilter = Nothing

Set objAddrEntries= Nothing

Set objSession = Nothing



%>

</TABLE><font face="Arial, Arial,

Helvetica"></font></BODY>

</HTML>



*************************************

I tried to modify the above page to display SMPT addresses but they weren't

always correct.  I used the code below to pull any and all SMTP addresses

for a specified user:





  strUsrString = request.servervariables("LOGON_USER")

  strMailbox = Mid(strUsrString, 5, len("00000000"))

  strExchangeServer = "Exchange_Server_Name"



  set objSession = Server.CreateObject("MAPI.Session")



  strProfileInfo = strExchangeServer & vbLF & strMailbox



  'response.write(strProfileInfo) //for debugging

  objSession.Logon "", "", False,True,0,True,strProfileInfo



  myUser = objSession.CurrentUser

  Set objMessage = objSession.Outbox.Messages.Add 

  Set objRecip = objMessage.Recipients.Add 

  objRecip.Name = request.form("strRecip")  //Change this to a valid display

name. 



  On Error Resume Next

  Err.Clear

  objRecip.Resolve  

  If Err.Number = 0 Then

   Set objField = objRecip.AddressEntry.Fields(&H800F101E)

   'PR_EMS_AB_PROXY_ADDRESSES 

 	For Each v In objField.Value   

 		If Mid(v, 1, 4) = "SMTP" Then        

 			strEmail = v

 		End If 

 	Next

 

   strRecipient = mid(strEmail, 6, 28)



*********end**********************************



Hope this helps,

Cheers,

Eli



-----Original Message-----

From: Michael Gorsuch [mailto:voodoo_bluesman@h...]

Sent: Friday, August 10, 2001 9:04 AM

To: ASP CDO

Subject: [asp_cdo] Resolving a name from a NT Login





Greetings everyone, 



I'm fairly new to CDO and its capabilities, but I do have a firm grasp on 

ASP and VB.  What I need to know is whether it is possible for you to 

resolve Exchange information (First name, last name, department, etc) via 

an NT login.  If this is possible, could anybody provide some simple code 

to show me the concepts?



I appreciate the help, 



Michael

Message #3 by "Michael Gorsuch" <voodoo_bluesman@h...> on Fri, 10 Aug 2001 21:06:48
Thank you very much for the help!  If I can ask a question - where did you 

get the constants from?  



Also, does this have to be run on the Exchange Server itself, or can it be 

run on a remote IIS server?



Thanks a ton, 



Michael



Message #4 by Eli Schilling <eschilli@t...> on Sat, 11 Aug 2001 05:00:21 -0700
I actually got that bit of code from another gentleman off this mailing

list.  I would assume the constants probably came from MSDN but I'm not

completely sure.



You are supposed to be able to run this on a seperate IIS server as long as

you use plain text authentication (known microsoft issue) but I was never

able to make it work.  Since I already had IIS on my exchange server I just

stuck it out there.



Regards,

Eli



-----Original Message-----

From: Michael Gorsuch [mailto:voodoo_bluesman@h...]

Sent: Friday, August 10, 2001 2:07 PM

To: ASP CDO

Subject: [asp_cdo] RE: Resolving a name from a NT Login





Thank you very much for the help!  If I can ask a question - where did you 

get the constants from?  



Also, does this have to be run on the Exchange Server itself, or can it be 

run on a remote IIS server?



Thanks a ton, 



Michael








  Return to Index