Searching Global Address List/Book
I'm developing an app that will allow the user user to view the contents of an inbox that they have access to. I am having a difficult time trying to find a means of searching t开发者_如何学Pythonhe Global Address List other then
AddressEntries entries = global.AddressEntries;
AddressEntry entry = entries["search value"];
This works but only returns one instance, and it is the first one found. I basically want to provide a list to the user if there are multiple results.
Secondly I would like to be able to view the contact details, but when I use the
ContactItem contact = entry.GetContact();
It always returns null, I think that it is because it is looking at the current user's contact personal list
I guess that I am trying to create a simple version of the Global Address Book window in Outlook, if that makes sense.
Anyway if anyone has any ideas or references I would be grateful!
Thanks Patrick
You should be able to get the Global Address List from current profile as shown below.
Outlook.AddressLists addrLists = Application.Session.AddressLists;
Outlook.AddressList gal = addrLists["Global Address List"];
Then you can enumerate and display the members of that AddressList
.
There's another way to do this described on MSDN here.
How to: Enumerate the Entries in the Global Address List
string[] names;
Outlook.AddressLists addrLists = Application.Session.AddressLists;
Outlook.AddressList gal = addrLists["Global Address List"];
//for a distrubution list do this...
Outlook.AddressEntry entry = gal.AddressEntries["distribution list"];
Outlook.ExchangeDistributionList exchDL = entry.GetExchangeDistributionList();
Outlook.AddressEntries addrEntries = exchDL.GetExchangeDistributionListMembers();
names = new string[addrEntries.Count];
for (int i = 0; i < addrEntries.Count; i++)
{
Outlook.AddressEntry exchDLMember = addrEntries[i];
names[i] = exchDLMember.Name;
}
return names;
//for an individual you could do something like this...
Outlook.AddressEntry entry = gal.AddressEntries["contact nickname"];
Outlook.ContactItem contact = entry.GetContact();
string name = contact.NickName;
string email = contact.Email1Address;
- Install Outlook Interop package
Install-Package Microsoft.Office.Interop.Outlook
- Here's the code (taken from MSDN)
using Microsoft.Office.Interop.Outlook;
var application = new Application();
AddressList gal = application.Session.GetGlobalAddressList();
if (gal != null)
{
for (int i = 1; i < gal.AddressEntries.Count - 1; i++)
{
AddressEntry addrEntry = gal.AddressEntries[i];
if (addrEntry.AddressEntryUserType == OlAddressEntryUserType.olExchangeUserAddressEntry ||
addrEntry.AddressEntryUserType == OlAddressEntryUserType.olExchangeRemoteUserAddressEntry)
{
ExchangeUser exchUser = addrEntry.GetExchangeUser();
Console.WriteLine($"{ exchUser.Name } { exchUser.PrimarySmtpAddress }");
}
if (addrEntry.AddressEntryUserType == OlAddressEntryUserType.olExchangeDistributionListAddressEntry)
{
ExchangeDistributionList exchDL = addrEntry.GetExchangeDistributionList();
Console.WriteLine($"{ exchDL.Name } { exchDL.PrimarySmtpAddress }");
}
}
}
精彩评论