Sorry 4 my late answer, but I hadn't the time to view the
list 4 the few last days =8(

I have written some small applications with M$-Xchange and LDAP.

You'll find a lot of examples and ready code (only ASP and VB)
in the MSDN-CD's.

You'll also need an Exchange-Account with the right privileges
if you want more than only read from the LDAP-Server.

I hope this helps. If you have more questions about Xchng && LDAP,
ask me. I have also written a web-based ADSI-Browser in ASP (sorry,
I was young and in need of the money =8) if you perhaps need it.
But you can also use the Xchng-Server-Console (in admin-mode) to
browse through the Xchng-Server, so that you will know where you
will find the info needed.

Greetinx,
  Mike

Here is a small example I wrote (and the class):

---------snip------------
<?php
//////////////////////////////////////////////////////////////////////////////////////////////
// <File-Header-Description>                                                           
     //
//////////////////////////////////////////////////////////////////////////////////////////////
//                                                                                     
     //
// Filename: LDAP_class_example.php                                                    
     //
//                                                                                     
     //
// Author:   Michael Rudel [mru] - mailto:[EMAIL PROTECTED]                         
     //
//                                                                                     
     //
//////////////////////////////////////////////////////////////////////////////////////////////
//                                                                                     
     //
// Description:                                                                        
     //
//                                                                                     
     //
// Usage:                                                                              
     //
//                                                                                     
     //
// Notes:                                                                              
     //
//                                                                                     
     //
// Bugs:                                                                               
     //
//                                                                                     
     //
//////////////////////////////////////////////////////////////////////////////////////////////
//
// History: 2000-10-23: mru: Created
//
//////////////////////////////////////////////////////////////////////////////////////////////
// </File-Header-Description>                                                          
     //
//////////////////////////////////////////////////////////////////////////////////////////////

//Includes

  include( "LDAP_Functions.class" );


//Constants

   define( "BR", "<BR>\n" );
   define( "NL", "\n"     );


//Variables

   // $logon_user works only with NTML (MSIE, IIS)
   $logon_user       = substr( str_replace( "\\", "/", $LOGON_USER ), ( strrpos( 
str_replace( "\\", "/", $LOGON_USER ), "//" ) +
1 ) );

   $exchangeHost     = "pcin39"
   $exchangePort     = ""
   $exchangeUser     = ""
   $exchangePasswort = ""
   $ldapBaseDN       = "cn=Recipients, ou=PCIN-NET, o=in GmbH, c=de"


//Objects

   $ldap             = new ldap_handling;


//Initialisation

   $ldap->developer  = [EMAIL PROTECTED];
   $ldap->headers    = $mailFrom."\nReply-To: ".$this->logon_user
                     . "\nX-Mailer: PHP/".phpversion();

//Main


   // Connect to Exchange-Server
   $ldap->connect( $exchangeHost, $exchangePort, __FILE__, __LINE__ );

   // Bind to open ldap_connect
   $ldap->bind( $exchangeUser, $exchangePasswort, __FILE__, __LINE__ );

   // Searches through the recipients in the LDAP-Tree
   $ldap->search( $ldapBaseDN
                , "(&(objectClass=organizationalPerson)(!(department=Keine)))"
                , array( "uid", "cn", "mail", "telephonenumber", "dn" )
                , __FILE__
                , __LINE__
                );

   // Print out the result-array from the LDAP-Search
   print_array( $ldap->result_array );

   // Close the LDAP-Connection to the Exchange-Server
   $ldap->close( __FILE__, __LINE__ );


//Functions

   // Prints out an array recursiv
   function print_array( $array, $seperator = "" )
   {
      while ( list( $key, $val ) = each($array) )
      {
         if ( is_array( $val ) )
         {
            print_array( $val, $seperator." => ".$key );
         }
         else
         {
            echo "$seperator => $key => $val".BR;
         }
      }
      echo BR;
   }


////////////////
// local Vars: |
// Tab-Width:3 |
//-------------+

///////////////////////////
// End of File            |
// LDAP_class_example.php |
//------------------------+
?>
---------snip------------

And here my class the code uses:

---------snip------------
<?php
//////////////////////////////////////////////////////////////////////////////////////////////
// <File-Header-Description>                                                           
     //
//////////////////////////////////////////////////////////////////////////////////////////////
//                                                                                     
     //
// Filename: LDAP_Functions.class                                                      
     //
//                                                                                     
     //
// Author:   Michael Rudel [mru] - mailto: [EMAIL PROTECTED]                        
     //
//                                                                                     
     //
//////////////////////////////////////////////////////////////////////////////////////////////
//                                                                                     
     //
// Description:                                                                        
     //
//                                                                                     
     //
// Usage:                                                                              
     //
//                                                                                     
     //
// Notes:                                                                              
     //
//                                                                                     
     //
// Bugs:                                                                               
     //
//                                                                                     
     //
//////////////////////////////////////////////////////////////////////////////////////////////
//
// History: 2000-09-23: mru: Created
//          2000-10-26: mru: Added:    ldap_search() function
//                                     ldap_close()  function
//                                     (Host/User) in error() function (only with NTLM)
//
//////////////////////////////////////////////////////////////////////////////////////////////
// </File-Header-Description>                                                          
     //
//////////////////////////////////////////////////////////////////////////////////////////////


// redeclaration protection
if ( !defined( "__LDAP_HANDLING__" ) )
{
   define( "__LDAP_HANDLING__", 1 );

   // $logon_user works only with NTML (MSIE, IIS)
   $logon_user  = substr( str_replace( "\\", "/", $LOGON_USER ), ( strrpos( 
str_replace( "\\", "/", $LOGON_USER ), "//" ) + 1 ) );

   $WWW_PATH    = str_replace( strrchr( "http://".$SERVER_NAME.$SCRIPT_NAME, "/" ), 
"/", "http://".$SERVER_NAME.$SCRIPT_NAME );


   class ldap_handling
   {

      var $ldap_connection;   // Datenbase-Connection
      var $ldap_result;       // Searchresult-Ressource
      var $ldap_host;         // Host from LDAP-Servers
      var $ldap_port;         // Port to LDAP-Servers
      var $developer;         // Mailaddress of the responsible developer (for error 
mails)
      var $headers;           // Additional Mail-Headers (From, Reply-To, X-Mailer, 
...)
      var $redirection;       // Bool-Flag whether to redirect in error-case or not 
(true/false)
      var $redirect;          // Target-URL to redirect to in case of error

      var $result_array;      // Searchresult-array


      // Constructor
      function ldap_handling()
      {
         // Initialize default-values
         $this->ldap_connection = 0;
         $this->ldap_binding    = 0;
         $this->ldap_result     = 0;
         $this->developer       = "[EMAIL PROTECTED]";
         $this->headers         = "From: ERROR! Unknown-LDAP-Connection\nReply-To: 
".$logon_user."\nX-Mailer: PHP/".phpversion();
         $this->redirection     = false;
         $this->redirect        = "http://intra";;

         $this->result_array    = "";
      }


      // Connect to LDAP-Server
      function connect( $host="", $port="", $file="", $line="" ) // empty port 
defaults to port 389
      {
         $this->ldap_host = $host;
         $this->ldap_port = $port;

         if ( !$this->ldap_connection = ldap_connect( $host, $port ) )
         {
            $this->error( "ERROR: Connect to LDAP-Server [".$host."] on Port 
[".$port."] failed!", $file, $line );
         }
      }


      // Binding to LDAP-Server
      function bind( $user="", $password="", $file="", $line="" ) // empty user and 
password try's to connect as anonymous to the
LDAP-Server
      {
         if ( !$this->ldap_binding = ldap_bind( $this->ldap_connection, $user, 
$password ) )
         {
            $this->error( "ERROR: Bind to LDAP-Server as User[".$user."] with Password 
[".$password."] failed!", $file, $line );
         }
      }


      // Searches the LDAP-Tree
      function search( $base_dn = "", $filter = "", $arrayAttributes = array(), $file 
= "", $line = "" ) // whole LDAP-Directory if
empty !!
      {
         // Filter-Syntax:  string Filter [, array attributes [, int attrsonly [, int 
sizelimit [, int timelimit [, int deref]]]]]
         if ( !$this->ldap_result = ldap_search ( $this->ldap_connection, $base_dn, 
$filter, $arrayAttributes ) )
         {
            $this->error( "ERROR: Searching LDAP-Server with base_dn[".$base_dn."] and 
filter[".$filter."] !", $file, $line );
         }

         if ( !$this->result_array = ldap_get_entries( $this->ldap_connection, 
$this->ldap_result ) )
         {
            $this->error( "ERROR: Getting the search-result entries from LDAP-Server 
with Search-Result-ID[".$this->ldap_result."]
!", $file, $line );
         }
      }



      // Closes the connection to LDAP-Server
      function close( $file="", $line="" )
      {
         if ( !ldap_close( $this->ldap_connection ) )
         {
            $this->error( "ERROR: Closing LDAP-Server [".$this->host."] on Port 
[".$this->port."] failed!", $file, $line );
         }
      }


      // Returns LDAP-Errornumber
      function errno()
      {
         return ( ldap_errno( $this->ldap_connection ) );
      }


      // returns LDAP-Errormessage
      function errmsg()
      {
         return ( ldap_error( $this->ldap_connection ) );
      }


      // Errormessages are mailed to the responsible developer
      function error( $err_msg, $file, $line )
      {
         global $logon_user;
         global $SERVER_NAME;

         // Constuct the errormessage
         $message  = "PHP-ErrorMessage: ".$php_errormsg."\n";
         $message .= "(".$SERVER_NAME."/".$logon_user.") LDAP-ERROR 
(".$this->errno()."): \"".$this->errmsg()."\"\n";
         $message .= $err_msg."\nError located in file \"".$file."\"\non line 
(".$line.")";

         // Send the errormessage to the developer
         error_log( $message, 1, $this->developer, $this->headers );

         // Closes the LDAP-Connection if still open
         if ( $this->connection != Null )
         {
            $this->close();
         }

         // Redirects the user if $redirection isset to $redirect
         if ( $this->redirection )
         {
            header( "Location: ".$this->redirect );
            exit;
         }
      }


   } // END Class: ldap_handling


} // END: Redeclare-Protection


////////////////
// local Vars: |
// Tab-Width:3 |
//-------------+

/////////////////////////
// End of File          |
// LDAP_Functions.class |
//----------------------+
?>---------snip------------

> -----Original Message-----
> From: Dickerson, Monty [mailto:[EMAIL PROTECTED]]
> Sent: Monday, May 21, 2001 9:21 PM
> To: '[EMAIL PROTECTED]'
> Subject: [PHP-WIN] LDAP and M$ Exchange 5.5 :: It's Not Happening.
>
>
> John, et.al.,
>
> It appears that to do management of recipients on Exchange Server
> will require using Microsoft COM and Microsoft ADSI; not just LDAP.
>
> Micro$oft embraced and extended LDAP, so that LDAP is a 2nd class
> protocol that can't do everything.  You have to do things the M$
> way on M$ products using M$ protocols.
>
> Freedom to "innovate."
>
> :(
>
> That's real interoperable, eh!
>
>
> -/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-
>
> FROM: http://msdn.microsoft.com/library/psdk/adsi/ds2exchgd_9h84.htm
>
> Creating a Custom Recipient
>
>       Dim strDisplayname As String
>       Dim strAlias As String
>       Dim strTelephone As String
>       Dim objCont As IADsContainer
>       Dim objNewCR As IADs
>
>       strDisplayname = "James Smith"
>       strAlias = "jsmith"
>       strTelephone = "867-5309"
>
>       Set objCont =
> GetObject("LDAP://Server/cn=Recipients,ou=Site,o=Org";)
>       Set objNewCR = objCont.Create("Remote-Address", CStr("cn=" &
> stralias))
>       objNewCR.Put "cn", CStr(strdisplayname)
>       objNewCR.Put "uid", CStr(stralias)
>       objNewCR.Put "telephoneNumber", CStr(strtelephone)
>       objNewCR.Put "Target-Address", "SMTP:[EMAIL PROTECTED]"
>       objNewCR.SetInfo
>
>  Note: This example is specific to Exchange Server version 5.5 and
> earlier, and is not upwardly compatible with Exchange 6.0. Management
> and access of Exchange 6.0 Servers should be made through the
> CDOEXM interfaces instead.
>
> -/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-
>
>
> -----Original Message-----
> Sent: Monday, May 21, 2001 12:26 PM
> To: [EMAIL PROTECTED]
> Cc: 'JayAchTee'; '[EMAIL PROTECTED]'
> Subject: LDAP and M$ Exchange 5.5
>
> Thanks for this tip!  I ran some queries on
> the Microsoft Support Knowledge Base for
> Exchange 5.5, but found NO information or
> examples of how to use LDAP with Exchange to
> do what you say.
>
> Would you point me to a URL, or what keywords
> to search on, or towards some resources which
> provide more information - regarding this?
> i.e. how to use LDAP to manage recipients on
> the Exchange server..
>
> sinc,
> md
>
> > -----Original Message-----
> > From: JayAchTee [mailto:[EMAIL PROTECTED]]
> > Sent: Monday, May 21, 2001 7:01 AM
> > To: [EMAIL PROTECTED]
> > Subject: Re: [PHP-WIN] Exchange
> >
> >
> > If you are running Exchange Server 5.5 SP 3+, then you can
> use LDAP to
> > manage recipients on the Exchange server.  The Microsoft
> > knowledge base has
> > several examples of how to use LDAP with Exchange.
> >
> > Regards.
> >
> > ""oifik"" <[EMAIL PROTECTED]> wrote in message
> > [EMAIL PROTECTED]">news:[EMAIL PROTECTED]...
> > > I would like to know if with php we can manage exchange
> > server (create
> > > account...) by using the imap librairies and if yes
> > > how we can doing it ?
> > > I can connect to my server (pop or imap), i can check mail
> > but it's all.
> > > Tahnks and sor for my english.
>
>
> --
> PHP Windows Mailing List (http://www.php.net/)
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
> To contact the list administrators, e-mail:
> [EMAIL PROTECTED]
>


-- 
PHP Windows Mailing List (http://www.php.net/)
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
To contact the list administrators, e-mail: [EMAIL PROTECTED]

Reply via email to