1

向分发列表发送电子邮件时,可以在全局地址列表 (GAL) 中找到列表本身。在 Outlook 2010 中访问 GAL 很简单,只需弹出您的通讯簿并选择适当的通讯簿(在本例中为登录用户的 GAL)。

我已经尝试并尝试访问 GAL 中的 ContactGroup 的成员,但它似乎没有 ID(因此也没有 UniqueID)。它来自已发送电子邮件的 ToRecipients 属性中的 MailboxType.PublicGroup 的 MailboxType,但我不知道如何访问实际的联系地址!

有谁知道我怎样才能抓住它们?我试过做公用文件夹搜索,搜索了完整的联系人,但似乎没有找到它。

丹尼尔。

4

2 回答 2

4

我使用 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 + ">");
                }
            }
        }
    }
}
于 2011-09-08T06:39:04.803 回答
1

EWS 不是适合这项工作的工具。您需要查询 ActiveDirectory。有关示例,请参见http://www.infinitec.de/post/2005/02/How-to-get-the-Global-Address-List-programatically.aspx 。

于 2010-11-21T20:10:39.437 回答