none
web services exchange 2007 en c# RRS feed

  • Question

  • bonjour à vous tous

    est ce qqun a deja utilisé les web services d'exchange serveur 2007 ?
    Je n'arrive pas à "demarrer" ...
    En fait, le but de ma demande est assez simple :
    je dois recuperer tous les mails nons lus d'une boite mail et les sauvegarder dans une table sql.
    Dans visual studio, j'ai créé une appli windows , j'ai ajouté une reference de service web en indiquant l'adresse du services web. Celui ci a bien été trouvé et j'ai acces à l'ensemble des bibliotheques de ces services.
    Le pb c'est par quoi commencer ?
    Si qqun avait un bout de code pour me permettre d'amorcer ma classe ce serait vraiment sympa.
    Au mois pouvoir me connecter sur la boite mail (boite de reception) et lire un mail.. Apres je pense que je pourais em debrouiller avec la doc msn mais là je ne trouve pas un seul exemple clair qui me permette de commencer .
    Merci à l'avance de votre aide
    Cordialement
    AL
    jeudi 22 avril 2010 06:15

Réponses

Toutes les réponses

  • Bonjour,

    via l'exemple suivant tu trouveras une marche à suive pour se connecter à une boite mail et récupérer tous les emails :

    C#: Getting All Emails From Exchange using Exchange Web Services

    Cordialement

    jeudi 22 avril 2010 08:10
    Modérateur
  • Bonjour et

    merci à toi  nikho

    J'ai donc essayé d'appliquer ce code et je ne comprends pas pourquoi la methode

    FindItemsResults

     n'est pas reconnue dans mon code .. tout le reste plante aussi d'ailleurs .. pourtant mon webservice est bien reconnu ..

    aurais tu une idée sur cela (sans vouloir abuser de ton temps )?

    Merci d'avance

    AL

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using lewebS = WebServicesTest_EWS_2.LeWebService;
    using ewsMail = Microsoft.ServiceModel.Channels.Mail.ExchangeWebService.Exchange2007;
    using System.Net;
    using System.Windows.Forms;
    
    namespace WebServicesTest_EWS_2
    {
      class Class1
      {
    
         public void letraitement()
        {
    
          // 1 identifie l'apple aux web services d'exchange
          ewsMail.ExchangeServiceBinding service = new ewsMail.ExchangeServiceBinding();
          service.Credentials = new NetworkCredential("user", "pwd", "domaine");
          service.Url = "https://serveur.com/EWS/Exchange.asmx";
    
           //2 recuper les mails 
    
          ewsMail.FindItemsResults<Item> findResults = service.FindItems( 
          WellKnownFolderName.Inbox,new ItemView( 10 ) ); 
    
      
    
    foreach ( Item item in findResults.Items ) 
    
     Console.WriteLine( item.Subject ); 
    
        }
      }
    }

     

    jeudi 22 avril 2010 13:47
  • Est ce que tu as suivi les étapes décrites et ajouter une référence à Microsoft.Exchange.WebServices.dll dans ton projet ?

    Tu dois utiliser le proxy ExchangeService défini dans cette dll.

    Une fois la référence ajoutée tu pourras faire un using Microsoft.Exchange.WebServices.Data

    La classe FindItemsResults   fait partie de ce namespace


    Cordialement

    jeudi 22 avril 2010 16:04
    Modérateur
  • re bonjour Nikho et un grand merci pour ton aide précieuse

    effectivement je n'avais pas dld l'api correspondante (j'ai confondu avec l'autre webservice d'exchange que je veux utiliser ..

    la je recupere effectivement la liste des mails de ma boite.

    Il me reste encore une question maintenant pour regler cette histoire de webservice. Dois je vraiment ajouter une reference de service web pour utiliser les webservices d'exchange (pour acceder au contenu des mails et pas seulement à la liste) ou est ce que je peux me contenter d'utiliser les classes de Microsoft.Exchange.WebServices.Data ??

    Merci pour tes conseils vraiment tres utiles .. cela m'aide vraiment beaucoup.

    Bonne journée

    Cordialement

    AL

    vendredi 23 avril 2010 06:23
  • Pour accéder au contenu il faut ajouter explicitement la demande de lecture de la propriété car le contenu n'est pas renvoyé par FindItem.

    Tu trouveras des informations dans les articles suivants :

    Exchange API-spotting

    Getting the body of an Email with a FindItems request

    Cordialement

     

    • Marqué comme réponse algeox vendredi 23 avril 2010 10:04
    vendredi 23 avril 2010 08:34
    Modérateur
  • Merci Nikho !!!

    la solution du 1er line plante sur un TryGetValue(HtmlBodyProperty, out body   ..

    je n'ai pas compris pourquoi

    mais le second lien donne une solution fiable ...

    comme je ne vais pas te deranger toutes les heures avec une question, sais tu ou je pourrais trouver des exemples vraiments concrets pour avancer davantage avec cette dll (Microsoft.Exchange.WebServices.dll )

    j'aurais besoin d'infos du style :

     - ne recuperer que les mails non lus (la je me tape l'ensemble de la boite de reception !!)

    - épurer le body (garder le texte, et non pas toutes les balises html ) ...

    Merci d'avance ... et encore un grand grand merci

    -

    vendredi 23 avril 2010 10:10
  • Des exemples doivent être fourni avec le sdk.

    Sinon sur msdn Working with the EWS Managed API

    Cordialement

    vendredi 23 avril 2010 11:58
    Modérateur
  • re bonjour Nikho

    Merci pour tes conseils et indications ... j'ai à peu près bouclé tout mon developpement !

    Il me reste juste deux points à éclaircir sur lesquels je ne trouve pas d'explications "claires"

    si tu as une idée sur cela ...

    1 / je n'arrive pas à comprendre comment faire pour aller lire un sous repertoire de la boite de reception 

    typiquement, j'ai creer un sous- dossier "test' dans ma boite de reception

    j'utilise ce code pour lire la boite de reception :

    findResults = service.FindItems(WellKnownFolderName.Inbox, view);

    comment nommer le repertoire "test" à ce niveau ?

    2/ je voudrais recuperer l'expediteur du mail . Pour cela j'ai vu qu'il fallait redefinir les propriétés qui ne "suivent " pas toujours par cette ligne de code :

    // on redefinit les propriétés qui dépendent de l'objet Parent
              service.LoadPropertiesForItems(findResults, new PropertySet(ItemSchema.Subject, ItemSchema.Body, EmailMessageSchema.DisplayTo, EmailMessageSchema.DateTimeSent, EmailMessageSchema.From));

    voila .. donc ici je recupere differentes valeurs dont j'ai besoin (date d'envoi, destinataire et expediteur) ... je peux exploiter les "displayTo" et DateTimeSent" mais le From n'apparait pas dans l'enumeration relatives à mon objet "Mail"

    As tu une idée du pourquoi ? Je dois zapper qq chose mais je ne vois pas quoi ??

    Merci à l'avance pour ton aide et excellente journée

    AL

    jeudi 29 avril 2010 08:46