C# Se connecter à une boite mail commune sur Outlook via Microsoft.Exchange.WebServices.Data

Plein d’exemple montre comment le faire sur sa propre boite mail outlook mais peu sur une boite mail commune outlook

LE truc c’est de se connecter avec son compte outlook , puis de se connecter à la boite mail commune (son réserve d’être autoriser à le faire , c’est à dire que vous pouvez vous y connecter avec votre outlook de manière normal)

Premiere Etape  , ajouter cette référence : using Microsoft.Exchange.WebServices.Data;

A télécharger ici si besoin : https://www.microsoft.com/en-us/download/details.aspx?id=35371

Puis voici un exemple ou je me connecter via mes crédentials à la boite mail commune test@bibliogeek.fr

 string MDP=ceciestuntest;
 string ADRESSEMAIL=monadressemailamoi@bibliogeek.fr

ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2013_SP1);
 service.Credentials = new WebCredentials(ADRESSEMAIL, MDP);
 service.TraceEnabled = false;
 service.TraceFlags = TraceFlags.All;
 service.AutodiscoverUrl(ADRESSEMAIL, RedirectionUrlValidationCallback);

EmailMessage email = new EmailMessage(service);
 FolderId SharedMailbox = new FolderId(WellKnownFolderName.Inbox, "test@bibliogeek.fr");

//Récupération des 100 derniers mails 

FolderView view = new FolderView(100);
 ItemView itemView = new ItemView(1000);

view.PropertySet = new PropertySet(BasePropertySet.IdOnly);
 view.PropertySet.Add(FolderSchema.DisplayName);
 view.Traversal = FolderTraversal.Deep;
 Mailbox mailbox = new Mailbox("test@bibliogeek.fr");
 FindFoldersResults findFolderResults = service.FindFolders(new FolderId(WellKnownFolderName.MsgFolderRoot, mailbox), view);
 SearchFilter filter = new SearchFilter.IsGreaterThanOrEqualTo(ItemSchema.DateTimeReceived, DateTime.Now.AddDays(-1));

//Récupération de tous les mails

FindItemsResults<Item> findResults = service.FindItems(SharedMailbox, itemView); //service.FindItems(WellKnownFolderName.Inbox, filter, view);

//en fonctionne du sujet du mail je fais une action , en l'occurence je le bouge dans une autre répértoire (MAIL_MOVE)

foreach (Item Item in findResults)
 {
 if (
 Item.Subject.Contains("premier sujet De mail à bouger'.") ||
 Item.Subject.Contains("seconde sujet De mail à bouger") ||
 )
 {
 foreach (Folder f in findFolderResults)
 {
 if (f.DisplayName == "MAIL_MOVE")
 {
 var fid = f.Id;
 Item.Load();
 Item.Move(fid);
 Console.WriteLine(DateTime.Now + "MOVE :"+ Item.Subject);
 }
 }
 }

 

 

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *