c# + outlook + exchange

c# + outlook + exchange - C#/.NET managed - Programmation

Marsh Posté le 01-04-2008 à 11:04:36    

hello
 
voila j'ai une question pour les pro d'outlook et exchange
 
un client a un outlook sur son ordinateur. sur un serveur il y a exchange d'installé. donc il a des contacts qui sont sur le serveur exchange.
 
mon but est de rechercher un contact par son numero de telephone sur outlook ET sur exchange...
donc moi voila ce que je me pose comme questions:
 
- outlook est il en continu synchronisé avec exchange
- les contacts de l'utilisateur sont ils sur le serveur exchange ou directement sur le disque dur d'outlook
 
pour preciser un peu voici le code qui va chercher les contacts d'outlook grace au numero.  
 
 
Code :
 

Code :
  1. Outlook.Application app = new Outlook.ApplicationClass();//On crée un objet Outlook
  2. Outlook.NameSpace NS = app.GetNamespace("MAPI" );
  3. Outlook.MAPIFolder objFolder = NS.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderContacts);
  4. Outlook.Items contactItems = objFolder.Items;//On récupère les contacts dans le outlook  ouvert
  5. Outlook.Items contact_filtre = contactItems.Restrict(String.Format("[AssistantTelephoneNumber]='{0}' or [Business2TelephoneNumber]='{0}' or [BusinessTelephoneNumber]='{0}' or [HomeTelephoneNumber]='{0}' or [CompanyMainTelephoneNumber]='{0}' or [Home2TelephoneNumber]='{0}' or [HomeTelephoneNumber]='{0}' or [MobileTelephoneNumber]='{0}' or [OtherTelephoneNumber]='{0}' or [PrimaryTelephoneNumber]='{0}' or [RadioTelephoneNumber]='{0}' or [TTYTDDTelephoneNumber]='{0}'",num));
  6. //On filtre les contacts Outlook et en fontion du nombre de reponse on les affiche différement
  7. switch (contact_filtre.Count)
  8. {
  9.            case 0:
  10.                       break;
  11. case 1:
  12.  Outlook.ContactItem contact = (Outlook.ContactItem)contact_filtre.GetLast();
  13.  contact.Display(false);
  14.  break;
  15. default :
  16.  ComboBox cb = new ComboBox();
  17.  foreach (Outlook.ContactItem contact_multi in contact_filtre)
  18.  {
  19.   cb.Items.Add(contact_multi.FullName);
  20.  }
  21.  Form frm = new frmContacts(cb, contactItems);//on crée un nouveau formulaire permettant de choisir le contact à afficher
  22.  frm.Show();
  23.  break;
  24. }


     
 
 
 
jusqu'ici pas de soucis: les contacts contenus dans outlook s'affichent sans soucis
 
voila ma question bien précisée:
 
- les contacts partagé sur le serveur exchange (je parle des contacts de l'utilisateur) seront ils bien vu de cette maniere? (outlook se synchronise t il en continu?)
 
- si on defini des contacts publics visibles par tout le monde sur le serveur exchange, seront ils automatiquement synchronisés avec les outlook et donc visibles par ce code? si non, comment y acceder?  
j'ai vu beaucoup de choses sur CDO, MAPI, WEBDAV etc etc, mais je ne sais pas trop quel est leur interet/simplicité/fonctionnalité/stabilité
 
voila voila
j'espere avoir été clair
 
merci d'avance
warenbe


---------------
mon feedback: http://forum.hardware.fr/hfr/Achat [...] 8120_1.htm
Reply

Marsh Posté le 01-04-2008 à 11:04:36   

Reply

Marsh Posté le 01-04-2008 à 13:48:45    

Ton code ne prend que les contacts présent dans le dossier Contact d'Outlook.
 
Donc pas les contacts partagés ni les contacts qu'il aurait mis dans d'autres dossiers.

Reply

Marsh Posté le 01-04-2008 à 14:00:30    

arf zut :(
 
mais alors comment faire pour chopper les contacts partagé d'un serveur exchange?
 
dois je passer obligatoirement par des trucs genre CDO webdav etc?
si oui j'ai pas trouvé de code qui me montre clairement comment rechercher un contact
j'ai trouvé pour des mails, des rendez vous ... mais rien pour les contacts. et je galere un peu :(
 
merci en tout cas pur ta reponse


---------------
mon feedback: http://forum.hardware.fr/hfr/Achat [...] 8120_1.htm
Reply

Marsh Posté le 01-04-2008 à 14:34:18    

C'est quoi comme version d'outlook et exchange ?
 
Exchange 2007 est assez friand des webservices, les autres c'est plus comme tu dis du cdo

Reply

Marsh Posté le 01-04-2008 à 14:47:34    

J'ai trouvé ça si ça peut t'aider : http://weblogs.asp.net/whaggard/ar [...] ation.aspx
 
En fait les contacts sur Exchange et Outlook c'est un peu complexe :D
 
Tu as la GAL (liste globale) qui contient tout ce qui est déclaré dans Exchange (users et contacts).
Tu as les contacts personnel de l'utilisateur qui est stocké sur outlook et exchange dans le dossier de l'utilisateur. C'est un ensemble de dossiers donc on peut aller hiérarchiquement.
 
Après et ça c'est un peu plus rare, tu as le personnal address book qui lui est que Outlook.
 
 
Outlook et Exchange synchronisent les contacts personnels (tu peux y avoir accès avec OWA donc c'est bien synchro), la GAL est des fois mis en cache sur le client.
 
Donc après faut voir soit passer en VBA comme tu fais, soit en CDO, soit en Webdav soit en web services ou pour la gal on peut directement faire une recherche dans ldap.
 
J'ai jamais dev dessus (je suis plus infra que dev) mais je peux aiguiller :d

Reply

Marsh Posté le 01-04-2008 à 14:52:40    

ok merci pour ton aide en tout cas
la je suis dans la meme situation que ton avatar ^^ pres à me flinguer
encore plus d'ailleur avec ce que tu viens de me dire
 
d'apres toi, quelle est la solution la plus simple à mettre en oeuvre? les webdav me semblaient pas bien compliqué mais j'ai pas enormement regardé
 
en attendant vais jetter un oeil sur ton lien


---------------
mon feedback: http://forum.hardware.fr/hfr/Achat [...] 8120_1.htm
Reply

Marsh Posté le 01-04-2008 à 14:54:42    

J'avoues que je ne sais pas trop, j'ai jamais eu à faire ce genre de choses.
 
Une autre chose que je sais c'est que il y a un SDK d'Exchange où il y a pas mal d'exemples de codes. Tu peux peut être regarder si tu y trouves des choses intéressantes

Reply

Marsh Posté le 01-04-2008 à 15:01:14    

yep
 
deja ton lien est bien car c'est exactement ce que je cherche à faire! chercher un contact avec un numero (au lieu du nom dans l'exemple mais ça c'est un detail)
 
donc deja vais me monter un petit exchange dans un coin et vais tester
le webdav me semble simple à mettr en place surtout grace a son format XML qui a l'avantage de présenter tres clairement une requette SQL
 
donc vais deja tenter ça
ensuite je testerai l'autre solution (webservice) qui je pense à l'avantage de fonctionner si la premiere ne fonctionne pas
 
donc merci milles fois! je te tiens au courant de la reussite ou pas d'ici vendredi


---------------
mon feedback: http://forum.hardware.fr/hfr/Achat [...] 8120_1.htm
Reply

Marsh Posté le 01-04-2008 à 15:07:07    

Fait gaffe à bien utiliser la bonne version d'exchange car en matière de prog ça a pas mal changé entre 2003 et 2007.
 
Si tu veux pas te faire chier avec Exchange à l'installer etc tu peux dl une machine virtuelle directement
http://www.microsoft.com/downloads [...] laylang=en (Exchange 2007 + SQL 2005)
http://www.microsoft.com/downloads [...] laylang=en (Exchange 2007 + LCS 2005 (c'est MSN like pour l'entreprise)
 
ou le mieux je pense
http://www.microsoft.com/downloads [...] laylang=en (Exchange 2007 SP1 uniquement)

Reply

Marsh Posté le 01-04-2008 à 15:10:33    

ha merci car j'etais en train d'installer windows serveur sur un ordi virtuel :D


---------------
mon feedback: http://forum.hardware.fr/hfr/Achat [...] 8120_1.htm
Reply

Marsh Posté le 01-04-2008 à 15:10:33   

Reply

Marsh Posté le 03-04-2008 à 18:22:31    

bon voila j'ai testé la recherche de contacts dans un dossier partagé
resultat: TREEEEESS LENt! sachant que le but de mon programme etait de sortir un contatc exchange dans la seconde, c'est rapé
 
donc la solution de secours: les clients souhaitants afficher leurs contacts exchangent en font une copie dans un dossier sur le disque dur :(
 
enfin merci beaucoup pour ton aide


---------------
mon feedback: http://forum.hardware.fr/hfr/Achat [...] 8120_1.htm
Reply

Marsh Posté le 04-04-2008 à 10:21:37    

je reviens à la charge
je pense que le probleme de lenteur venait du fait que je developpais avec les objets d'outlook 2007 a destination d'un client sur outlook 2003
j'ai donc retravaillé avec des objets outlook 2003 et j'ai envoyé une version beta au client
j'attend ses retours que je ne manquerai pas de vous donner
 
(ps: je mettrai la methode que j'ai utilisé si celle ci marche bien chez le client)


---------------
mon feedback: http://forum.hardware.fr/hfr/Achat [...] 8120_1.htm
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed