2010-11-19 6 views
1

Beim Senden von E-Mails an Verteilerlisten werden die Listen selbst in der globalen Adressliste (GAL) gefunden. Der Zugriff auf die GAL in Outlook 2010 ist eine einfache Angelegenheit, indem Sie in Ihr Adressbuch blättern und das entsprechende Adressbuch auswählen (in diesem Fall die GAL für den angemeldeten Benutzer).Abrufen von GroupContact-Mitgliedern aus PublicGroup in der globalen Adressliste (EWS)

Ich habe versucht und versucht, Zugriff auf die Mitglieder einer ContactGroup innerhalb der GAL zu bekommen, aber es scheint keine ID (und damit auch keine UniqueID) zu haben. Es wird als MailboxType von MailboxType.PublicGroup innerhalb der ToRecipients-Eigenschaft einer gesendeten E-Mail angezeigt, ich kann jedoch nicht herausfinden, wie Sie auf die tatsächlichen Kontaktadressen zugreifen können.

Wer weiß, wie ich sie bekommen kann? Ich habe versucht, öffentliche Ordner zu durchsuchen, vollständige Kontakte gesucht, aber nichts scheint es zu finden.

Daniel.

Antwort

4

Ich verwende Exchange Web Services Managed API 1.1 SDK und es funktioniert wie ein Charme.
Ersetzen Sie <exchange_server> und <group_name> mit einem eigenen.

using System; 
using System.Windows.Forms; 
using Microsoft.Exchange.WebServices.Data; 

namespace test3 
{ 
    public partial class Form1 : Form 
    { 
     ExchangeService service = null; 

     public Form1() 
     { 
      InitializeComponent(); 
     } 

     private void Form1_Load(object sender, EventArgs e) 
     { 
      service = new ExchangeService(); 
      service.Url = new Uri("https://<exchange_server>/EWS/Exchange.asmx"); 
     } 

     private void button1_Click(object sender, EventArgs e) 
     { 
      NameResolutionCollection nameResolutions = service.ResolveName(
       "<group_name>", 
       ResolveNameSearchLocation.DirectoryOnly, 
       true); 

      foreach (NameResolution nameResolution in nameResolutions) 
      { 
       ExpandGroupResults groupResults = service.ExpandGroup(nameResolution.Mailbox.Address); 
       foreach (EmailAddress member in groupResults.Members) 
       { 
        Console.WriteLine(member.Name + " <" + member.Address + ">"); 
       } 
      } 
     } 
    } 
} 
Verwandte Themen