Exchangeに接続されたOutlookからインターネット形式のアドレスを読み取ろうとしています。Outlookの連絡先からすべての連絡先を読み取りました。つまり、グローバルアドレスブック(GAB)からではありません。問題は、Exchange GABの連絡先に保存されているすべてのユーザーに対して、X.500形式の連絡先しか読み取れなかったことです。この場合は役に立たないアドレス。Exchangeサーバーのドメインにない手動で追加されたすべての連絡先については、インターネットアドレスが期待どおりにエクスポートされます。
基本的に、連絡先を列挙するために次のコードスニペットを使用しました。
static void Main(string[] args)
{
var outlookApplication = new Application();
NameSpace mapiNamespace = outlookApplication.GetNamespace("MAPI");
MAPIFolder contacts = mapiNamespace.GetDefaultFolder(OlDefaultFolders.olFolderContacts);
for (int i = 1; i < contacts.Items.Count + 1; i++)
{
try
{
ContactItem contact = (ContactItem)contacts.Items[i];
Console.WriteLine(contact.FullName);
Console.WriteLine(contact.Email1Address);
Console.WriteLine(contact.Email2Address);
Console.WriteLine(contact.Email3Address);
Console.WriteLine();
}
catch (System.Exception e) { }
}
Console.Read();
}
X.500の代わりにインターネットアドレスを抽出する方法はありますか?