将电子邮件发送到通讯组列表时,列表本身可在全局地址列表(GAL)中找到。在Outlook 2010中访问GAL很简单,只需弹出地址簿并选择相应的地址簿(在本例中为登录用户的GAL)。
我已经尝试过尝试访问GAL中的ContactGroup的成员,但它似乎没有ID(因此,也没有UniqueID)。它从已发送电子邮件的ToRecipients属性中显示为MailboxType.PublicGroup的MailboxType,但我无法找到如何访问实际的联系地址!
任何人都知道如何抓住他们?我已经尝试过公共文件夹搜索,搜索了完整的联系人,但似乎没有找到它。
丹尼尔。
答案 0 :(得分:4)
我使用Exchange Web服务托管API 1.1 SDK,它就像一个魅力
将<exchange_server>
和<group_name>
替换为您自己的。{/ p>
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 :(得分:1)
EWS不适合这项工作。您需要查询ActiveDirectory。有关示例,请参阅http://www.infinitec.de/post/2005/02/How-to-get-the-Global-Address-List-programatically.aspx。