2009-02-10 7 views
1

Im créer une application qui doit lire et mettre à jour les informations de contacts (comme numéro de téléphone, email, etc.) de Microsoft Exchange ...Comment lire la base de données Exchange?

Est-ce que quelqu'un sait comment se connecter à un MS Exchange DB ??

Répondre

1

Vous devrez utiliser MAPI étendu, il n'est pas une base de données standard SQL.

+0

hmmm ... pouvez-vous me donner plus d'informations ... im en utilisant C# et je veux juste mettre à jour/insérer des informations de contacts Exchange –

2

WebDAV est ce que j'utilise ...

Voici une fonction que j'ai écrit pour accéder à notre serveur d'échange (être gentil je l'ai écrit il y a des années) .. (:

/// <summary> 
    /// Returns XML string for a specific query 
    /// </summary> 
    /// <param name="Query"></param> 
    /// <param name="Account"></param> 
    /// <param name="Folder"></param> 
    /// <returns></returns> 
    private string ProcessRequest(string Query, string Account, string Folder) { 

    System.Net.WebRequest req = WebRequest.Create("http://" + MailServer + "/exchange/" + Account + "/" + Folder); 
     req.Headers.Add("Depth", "1"); 
     req.Headers.Add("Brief", "t"); 
     req.Credentials = ncCurrent; 

     Byte[] bytes = System.Text.Encoding.ASCII.GetBytes(Query); 
     req.ContentType = "text/xml"; 
     req.ContentLength = bytes.Length; 
     req.Method = "SEARCH"; 

     System.IO.Stream oStreamOut = req.GetRequestStream(); 
     oStreamOut.Write(bytes, 0, bytes.Length); 
     oStreamOut.Close(); 

     WebResponse rsp = req.GetResponse(); 
     System.IO.Stream oStreamIn = rsp.GetResponseStream(); 
     System.IO.StreamReader oStreamRead = new System.IO.StreamReader(oStreamIn); 
     return oStreamRead.ReadToEnd(); 
} 

et voici comment i invoquer

string xmldata = "<?xml version= \"1.0\"?>" + 
    "<g:searchrequest xmlns:g=\"DAV:\">" + 
     "<g:sql> Select \"DAV:href\" , \"urn:schemas:httpmail:subject\" " + 
     "FROM Scope('SHALLOW TRAVERSAL OF \"/exchange/" + Account + "/" + Folder + "\"') " + 
     "</g:sql>" + 
    "</g:searchrequest>"; 



    XmlDocument d = new XmlDocument(); 
    d.LoadXml(ProcessRequest(xmldata, Account, Folder)); 

Espérons que cela vous fait dans la bonne direction

+0

hmmm ... pouvez-vous me donner plus d'informations ... im en utilisant C# et je viens voulez mettre à jour/insérer des informations de contacts Exchange –

+0

Eek ... Je n'ai fait que lire, mais si vous comprenez cette partie, coudl vous laissez savoir .. merci .. J'ai lu avec succès les calendriers et les boîtes de réception .. n'ont pas essayé quelque chose avec des contacts. il y a des références MSDN pour webdav et il semble que ce soit un "standard" ... – Rob

+0

ok Rob enquêtera et vous laisser savoir si quelque chose qui fonctionne ... merci –

1

Vous pouvez:

Utilisez ExtendedMAPI. Recherchez MAPI33 sur le net. Il a des exemples de ce que vous voulez faire, je pense.

Utilisez les services Web. Thats la manière préférée en 2007

WebDAV fonctionne aussi, mais je ne pense pas que cela fonctionne en 2007 du tout?

MAPI est le meilleur moyen, mais il n'est pas officiellement pris en charge dans .NET (cela fonctionne), et il ne fonctionne PAS DU TOUT en mode 64 bits. C'est 32 bits seulement.

0

Vous pouvez utiliser la commande ExchangeManagmentShell et émettre des commandes powershell comme set-mailbox pour modifier l'adresse de messagerie.

Mais si vous voulez seulement mettre à jour le numéro de téléphone, roomnumber, etc. Tout est stocké dans ActiveDirectory.

Questions connexes