Pergunta

Ao enviar e -mails para listas de distribuição, as próprias listas são encontradas na lista de endereços globais (GAL). O acesso ao GAL no Outlook 2010 é uma questão simples de entrar no seu catálogo de endereços e selecionar o livro de endereços apropriado (neste caso, o GAL para o usuário registrado).

Eu tentei e tentei ter acesso aos membros de um grupo de contatos dentro da gal, mas ele não parece ter um ID (e, como tal, também não é exclusivo). Ele surge como um MailBoxtype do MailBoxtype.publicgroup de dentro da propriedade TORECIPIENTS de um email enviado, mas não consigo descobrir como acessar os endereços de contato reais!

Alguém sabe como eu posso conseguir deles? Eu tentei fazer pesquisas de pastas públicas, contatos completos pesquisados, mas nada parece encontrá -lo.

Daniel.

Foi útil?

Solução

O EWS não é a ferramenta certa para o trabalho. Você precisa consultar o ActiveDirectory. Ver http://www.infinitec.de/post/2005/02/how-to-get-the-global-address-list-programatics.aspx Por exemplo.

Outras dicas

Eu uso o Exchange Web Services Gerencied API 1.1 SDK e funciona como um charme.
Substituir <exchange_server> e <group_name> com o seu próprio.

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 + ">");
                }
            }
        }
    }
}
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top