Получение членов GroupContact из PublicGroup в глобальном списке адресов (EWS) - PullRequest
1 голос
/ 19 ноября 2010

При отправке электронных писем в списки рассылки сами списки находятся в глобальном списке адресов (GAL). Чтобы получить доступ к GAL в Outlook 2010, достаточно просто зайти в свою адресную книгу и выбрать соответствующую адресную книгу (в данном случае GAL для вошедшего в систему пользователя).

Я пытался и пытался получить доступ к членам группы контактов в GAL, но у нее, похоже, нет идентификатора (и, как такового, также нет уникального идентификатора). Он выглядит как MailboxType для MailboxType.PublicGroup из свойства ToRecipients отправленного электронного письма, но я не могу узнать, как получить доступ к фактическим контактным адресам!

Кто-нибудь знает, как мне их заполучить? Я пытался выполнить поиск в общих папках, полные контакты искали, но, похоже, ничего не нашло.

Daniel.

Ответы [ 2 ]

4 голосов
/ 08 сентября 2011

Я использую Exchange Web Services Managed API 1.1 SDK, и он работает как шарм.
Замените <exchange_server> и <group_name> своим собственным.

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 + ">");
                }
            }
        }
    }
}
1 голос
/ 21 ноября 2010

EWS не является подходящим инструментом для работы. Вам нужно запросить ActiveDirectory. См. http://www.infinitec.de/post/2005/02/How-to-get-the-Global-Address-List-programatically.aspx для примера.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...