IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

Récupérer contact exchange [Débutant]


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juin 2013
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2013
    Messages : 37
    Par défaut Récupérer contact exchange
    Bonjour à tous,

    J'aurais voulu savoir si quelqu'un avait un bon tutoriel concernant la récupération des contacts stockés dans un exchange 2010?

    Par exemple je voudrais faire un combobox avec les contacts exchange à disposition.

    J'ai pu comprendre que pour faire ça, je pouvais utiliser EWS?

    Est-ce une bonne solution?

    Merci d'avance pour votre réponse.

  2. #2
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Billets dans le blog
    3
    Par défaut
    Oui EWS est fait pour permettre à une application X de communiquer avec Exchange

    Voici un tuto : Querying the Global Address List (GAL) via Exchange Web Services (EWS). Si tu en veux d'autres, cherches sur Google avec l'expression "C# how to get exchange contacts" par exemple...
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juin 2013
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2013
    Messages : 37
    Par défaut
    Citation Envoyé par DotNetMatt Voir le message
    Oui EWS est fait pour permettre à une application X de communiquer avec Exchange

    Voici un tuto : Querying the Global Address List (GAL) via Exchange Web Services (EWS). Si tu en veux d'autres, cherches sur Google avec l'expression "C# how to get exchange contacts" par exemple...
    J'essaye de testé avec EWS

    J'ai donc ajouté une référence de service :
    https://myserver/EWS/Exchange.asmx (la connection s'est bien déroulée)

    Lorsque je lance l'application, l'erreur suivant s'affiche :

    La connexion sous-jacente a été fermée : Impossible d'établir une relation de confiance pour le canal sécurisé SSL/TLS.

    Voici mon code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using ConsoleApplication1.ServiceReference1;
    using System.Net;
    using System.Web;
     
     
    namespace ConsoleApplication1
    {
        class Program
        {
            static void Main(string[] args)
            {
                ExchangeServiceBinding esb = new ExchangeServiceBinding();
                esb.Url = @"https://myserver/EWS/Exchange.asmx";
                esb.Credentials = new NetworkCredential(
                    "user",
                    @"password",
                    @"domain");
     
                // Create the ResolveNamesType and set
                // the unresolved entry.
                ResolveNamesType rnType = new ResolveNamesType();
                rnType.ReturnFullContactData = true;
                rnType.UnresolvedEntry = "test";
     
                // Resolve names.
                ResolveNamesResponseType resolveNamesResponse
                = esb.ResolveNames(rnType);
                ArrayOfResponseMessagesType responses
                = resolveNamesResponse.ResponseMessages;
     
                // Check the result.
                if (responses.Items.Length > 0 &&
                responses.Items[0].ResponseClass
                  != ResponseClassType.Error)
                {
                    ResolveNamesResponseMessageType responseMessage =
                  responses.Items[0] as
                  ResolveNamesResponseMessageType;
     
                    // Display the resolution information.
                    ResolutionType[] resolutions =
                  responseMessage.ResolutionSet.Resolution;
                    foreach (ResolutionType resolution
                  in resolutions)
                    {
                        Console.WriteLine(
                    "Name: " +
                    resolution.Contact.DisplayName
                    );
                        Console.WriteLine(
                    "EmailAddress: " +
                    resolution.Mailbox.EmailAddress
                    );
     
                        if (resolution.Contact.PhoneNumbers != null)
                        {
                            foreach (
                      PhoneNumberDictionaryEntryType phone
                      in resolution.Contact.PhoneNumbers)
                            {
                                Console.WriteLine(
                        phone.Key.ToString() +
                        " : " +
                        phone.Value
                        );
                            }
                        }
                        Console.WriteLine(
                    "Office location:" +
                    resolution.Contact.OfficeLocation
                    );
                        Console.WriteLine("\n");
                    }
                }
            }
        }
    }
    Merci d'avance pour votre réponse

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Juin 2013
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2013
    Messages : 37
    Par défaut
    Voici mon nouveau code mais il affiche toujours l'erreur :

    The request failed. La connexion sous-jacente a été fermée : Impossible d'établir une relation de confiance pour le canal sécurisé SSL/TLS.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    static void Main(string[] args)
            {
                ExchangeService service = new ExchangeService();
                service.UseDefaultCredentials = true;
                service.Credentials = new WebCredentials("user", "password", "domain");
     
                service.Url = new Uri("https://mail.domain.com/EWS/Services.asmx");
     
     
                foreach (Contact contact in service.FindItems(WellKnownFolderName.Contacts, new ItemView(int.MaxValue)))
                {
                    Console.WriteLine(contact);
                }
     
          }

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Juin 2013
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2013
    Messages : 37
    Par défaut
    J'ai réussi à supprimer l'erreur SSL/TLS via un code présent sur le MSDN...

    Ce que je voudrais c'est obtenir la liste des contacts qui sont dans cette mailbox. Une idée SVP?

    Merci d'avance pour votre réponse.

    J'ai réussi à lire les mails présent dans la boite de réception grâce à ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    static void Main(string[] args)
            {
                ServicePointManager.ServerCertificateValidationCallback = delegate(Object obj, X509Certificate certificate, X509Chain chain, SslPolicyErrors errors)
                {
                    // If the certificate is a valid, signed certificate, return true.
                    if (errors == System.Net.Security.SslPolicyErrors.None)
                    {
                        return true;
                    }
                    // If there are errors in the certificate chain, look at each error to determine the cause.
                    if ((errors & System.Net.Security.SslPolicyErrors.RemoteCertificateChainErrors) != 0)
                    {
                        if (chain != null && chain.ChainStatus != null)
                        {
                            foreach (System.Security.Cryptography.X509Certificates.X509ChainStatus status in chain.ChainStatus)
                            {
                                if ((certificate.Subject == certificate.Issuer) &&
                                   (status.Status == System.Security.Cryptography.X509Certificates.X509ChainStatusFlags.UntrustedRoot))
                                {
                                    // Self-signed certificates with an untrusted root are valid.
                                    continue;
                                }
                                else
                                {
                                    if (status.Status != System.Security.Cryptography.X509Certificates.X509ChainStatusFlags.NoError)
                                    {
                                        // If there are any other errors in the certificate chain, the certificate is invalid,
                                        // so the method returns false.
                                        return false;
                                    }
                                }
                            }
                        }
                        // When processing reaches this line, the only errors in the certificate chain are
                        // untrusted root errors for self-signed certificates. These certificates are valid
                        // for default Exchange Server installations, so return true.
                        return true;
                    }
                    else
                    {
                        // In all other cases, return false.
                        return false;
                    }
                };
     
                ExchangeService _service = new ExchangeService(ExchangeVersion.Exchange2010);
                _service.Credentials = new WebCredentials("user", "password");
                _service.Url = new Uri("https://mail.domain.be/ews/exchange.asmx");
     
                //Mail dans mailbox
                FindItemsResults<Item> findResults =  _service.FindItems(
                WellKnownFolderName.Inbox, new ItemView(10));
     
                foreach (Item item in findResults.Items)
                    Console.WriteLine(item.Subject);
                Console.ReadLine();

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Juin 2013
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2013
    Messages : 37
    Par défaut
    Voila! J'ai enfin réussi à récupérer les contacts via EWS

    Voici le code pour ceux que ça interesse :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
     static void Main(string[] args)
            {
     
     
                ServicePointManager.ServerCertificateValidationCallback = delegate(Object obj, X509Certificate certificate, X509Chain chain, SslPolicyErrors errors)
                {
     
                    if (errors == System.Net.Security.SslPolicyErrors.None)
                    {
                        return true;
                    }
     
                    if ((errors & System.Net.Security.SslPolicyErrors.RemoteCertificateChainErrors) != 0)
                    {
                        if (chain != null && chain.ChainStatus != null)
                        {
                            foreach (System.Security.Cryptography.X509Certificates.X509ChainStatus status in chain.ChainStatus)
                            {
                                if ((certificate.Subject == certificate.Issuer) &&
                                   (status.Status == System.Security.Cryptography.X509Certificates.X509ChainStatusFlags.UntrustedRoot))
                                {
     
                                    continue;
                                }
                                else
                                {
                                    if (status.Status != System.Security.Cryptography.X509Certificates.X509ChainStatusFlags.NoError)
                                    {
     
                                        return false;
                                    }
                                }
                            }
                        }
     
                        return true;
                    }
                    else
                    {
     
                        return false;
                    }
                };
     
     
     
                ExchangeService _service = new ExchangeService(ExchangeVersion.Exchange2010);
                _service.Credentials = new WebCredentials("user", "password");
                _service.Url = new Uri("https://mail.domain.com/ews/exchange.asmx");
     
                //Contact mailbox
                ContactsFolder contactsfolder = ContactsFolder.Bind(_service, WellKnownFolderName.Contacts);
     
     
                int numItems = contactsfolder.TotalCount < int.MaxValue ? contactsfolder.TotalCount : int.MaxValue;
     
     
                ItemView view = new ItemView(numItems);
     
     
                view.PropertySet = new PropertySet(BasePropertySet.IdOnly, ContactSchema.DisplayName);
     
     
                FindItemsResults<Item> contactItems = _service.FindItems(WellKnownFolderName.Contacts, view);
     
     
                foreach (Item item in contactItems)
                {
     
                    if (item is Contact)
                    {
                        Contact contact = item as Contact;
                        Console.WriteLine(contact.DisplayName);
     
                    }
     
                }
     
                Console.ReadLine();
     
            }

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [PowerShell] Recherche de contact exchange
    Par greg-44 dans le forum Scripts/Batch
    Réponses: 2
    Dernier message: 22/12/2012, 10h39
  2. [OL-2010] Gestion des contacts / Exchange / CRM
    Par john.olivari dans le forum Outlook
    Réponses: 3
    Dernier message: 13/10/2010, 10h32
  3. Acceder aux contacts Exchange
    Par Ekik dans le forum VBA Outlook
    Réponses: 1
    Dernier message: 29/08/2008, 16h00
  4. Réponses: 2
    Dernier message: 17/04/2008, 16h15
  5. Dossier contacts Exchange en .NET
    Par odelayen dans le forum Général Dotnet
    Réponses: 1
    Dernier message: 01/06/2007, 19h25

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo