Meilleur auteur de réponses
web services exchange 2007 en c#

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
Réponses
-
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 :
Getting the body of an Email with a FindItems request
Cordialement
- Marqué comme réponse algeox vendredi 23 avril 2010 10:04
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
- Proposé comme réponse nikhoModerator vendredi 23 avril 2010 10:10
-
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 ); } } }
-
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 -
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
-
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 :
Getting the body of an Email with a FindItems request
Cordialement
- Marqué comme réponse algeox vendredi 23 avril 2010 10:04
-
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
-
-
Des exemples doivent être fourni avec le sdk.
Sinon sur msdn Working with the EWS Managed API
Cordialement
-
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