Поиск в глобальном списке адресов Outlook
Я вытащил глобальный список адресов из Outlook, как это...
Microsoft.Office.Interop.Outlook.Application oApp = new Microsoft.Office.Interop.Outlook.Application();
AddressList gal = oApp.Session.GetGlobalAddressList();
... с целью, в конечном итоге, иметь возможность искать это в моем собственном приложении, чтобы получить контактную информацию, которую я затем могу предоставить методу, сжимающему электронную почту. К сожалению, учитывая, что мой собственный GAL имеет около 20 000 записей (клиентов гораздо больше), использующих foreach, или что-то просто не работает в приемлемые сроки.
Я хочу передать строку типа "Том" методу и вернуть список возможных контактов. Возможно ли это за пределами фактического открытия Outlook и создания почты там?
Примечание: есть несколько других вопросов, похожих на этот, но большинство, кажется, не имеют хорошего ответа. Я надеюсь, что мне повезет больше.
1 ответ
Хорошо, после МНОГО Google и стресса я все еще не нашел хороший способ сделать это. Моя работа заключается в том, чтобы искать в локальной папке контактов пользователя, используя этот пример MSDN. Локальная папка контактов любого из моих пользователей, как правило, не превышает тысячи (на самом деле обычно не превышает ста), поэтому ее поиск не требует особых затрат.
Если в локальном каталоге пользователей ничего не появляется (или они пытаются отправить электронное письмо на недопустимый адрес, используя функцию электронной почты моих приложений), тогда я получаю Outlook, чтобы предоставить мне немодальное окно "Новая электронная почта", которое имеет все тело, вложения, заголовок и т. д. созданы для меня, и пользователь может использовать функцию поиска Outlooks, чтобы найти адрес из GAL.
Вроде как это...
if(CantFindAddressesLocally)
{
MailItem email = (MailItem)(oApp.CreateItem(OlItemType.olMailItem));
email.Subject = "MY SUBJECT";
email.Body = "MY BODY";
email.Attachments.Add(myAttachment);
email.Display(false) //popup an Outlook "New Email" window
}
По общему признанию неуклюжий, так как он требует использования интерфейса Outlook (и, во-первых, избегать всего этого - включения функциональности электронной почты), но, по крайней мере, он генерирует электронную почту - единственное, что остается пользователю - это ввести адрес, который действительно действителен,