何時間も検索した後、ここで私の運を試しています。
john.doe@company.com と admin.test@company.com の 2 つのアクティブなアカウントを持つ Outlook 2010 があるとします。
admin.test@company.com のグローバル アドレス リストをプルする必要があります。
using Microsoft.Office.Interop.Outlook;
Application app = new Application();
NameSpace ns = app.GetNamespace("MAPI");
ns.Logon("", "", false, true);
AddressList GAL = ns.AddressLists["Global Address List"];
foreach (AddressEntry oEntry in GAL.AddressEntries)
{
// do something
}
ここでの問題は、GAL がいずれかのアカウントに属している可能性があり、少なくとも MSDN を読んでも、実際に使用するアカウントをどのように指定すればよいかがわからないことです。
そのようなすべてのリストを調べる場合:
foreach (AddressList lst in ns.AddressLists)
{
Console.WriteLine("{0}, {1}", lst.Name, lst.Index);
}
「Global Address List」という名前の 2 つのエントリ、「Contacts」という名前の 2 つのエントリなど、インデックスが異なることがわかりますが、どちらがどのアカウントに属しているかはまだ明確ではありません。
フォルダの場合、次のような構成を使用できるため、非常にうまく機能します。
ns.Folders["admin.test@company.com"].Folders["Inbox"];
しかし、AddressLists の同様のメカニズムがわかりません。
どんな助けでも感謝します。
ありがとうございました。