en utilisant le modèle d'objet Outlook, puis-je obtenir les champs que je vois dans le contact Outlook?

StackOverflow https://stackoverflow.com/questions/1811666

  •  06-07-2019
  •  | 
  •  

Question

Je suis en mesure de parcourir le carnet d'adresses global à l'aide du modèle d'objet Outlook, mais existe-t-il malgré tout à l'aide du modèle d'objet Outlook de csharp? Je peux obtenir les propriétés suivantes d'une personne:

Ville, État, pays / région Alias Titre Téléphone

Je n'arrive pas à trouver ces propriétés sur l'objet AddressEntry.

EDIT: J'ai commencé une prime ici. Je travaille avec des requêtes LDAP, mais elles sont très pénibles. Je suis choqué que la perspective ne supporte pas cela dans sa simple api. Je voulais voir si quelqu'un d'autre le faisait fonctionner ou pouvait expliquer / justifier pourquoi Outlook n'aurait pas de soutien pour cette

Était-ce utile?

La solution

Utilisation de Microsoft.Office.Interop.Outlook
Vous devez utiliser l'objet ExchangeUser et la méthode GetExchangeUser sur l'objet AddressEntry.

using System;
using Microsoft.Office.Interop.Outlook;
static class Program
{
    static void Main(string[] args)
    {
        ExchangeUser oExUser;
        Application app = new Microsoft.Office.Interop.Outlook.Application();
        foreach (AddressList addressList in app.Session.AddressLists)
        {
            if (addressList.Name == "Global Address List")
            {
                foreach (AddressEntry item in addressList.AddressEntries)
                {
                    Console.WriteLine(item.Address);
                    oExUser = item.GetExchangeUser();
                    if (oExUser != null) 
                    {
                        Console.WriteLine(oExUser.FirstName);
                        Console.WriteLine(oExUser.LastName);
                        Console.WriteLine(oExUser.StreetAddress);
                        Console.WriteLine(oExUser.CompanyName);
                        Console.WriteLine(oExUser.Department);
                        Console.WriteLine(oExUser.OfficeLocation);
                        Console.WriteLine(oExUser.JobTitle);
                    }
                    Console.WriteLine();
                }
            }
        }
        Console.Read();
    }
}

Autres conseils

RDO et qu’il utilise pour vous? Il offre pas mal de choses que bloque Outlook, notamment les données d'adresse

.

RDO & amp; C #

Comme toujours lorsque vous devez utiliser un modèle d'objet Outlook, je vous recommande d'utiliser la bibliothèque de Redemption . (Cela impliquerait COM Interop de C #, mais cela ne devrait pas poser de problème.) Là, vous devriez jeter un oeil à la bibliothèque RDO (Redemption Data Objects) , puis au RDOAddressBook et objets RDOAddressEntry . L'objet RDOAddressEntry expose toutes les propriétés que vous recherchez.

La bibliothèque Redemption élimine les problèmes liés à la sécurité Outlook et permet également d'accéder à davantage de propriétés que celles exposées dans le MOO normal. Malheureusement, je ne peux pas vous fournir d'échantillon de travail pour résoudre votre problème spécifique, car j'utilise encore la bibliothèque pour le traitement du courrier. Toutefois, il existe de nombreux exemples de code sur le site Redemption.

Comme suggéré dans la question , vous pouvez avoir recours à un accès direct à la base de données LDAP située sous le carnet d'adresses.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top