У меня два вопроса:
1: у нас есть общедоступная папка Outlook под названием Global Contacts, которая содержит (как вы уже догадались) множество контактов, доступных каждому, имеющему учетную запись на сервере.
Я могу получить к нему доступ с помощью этого кода:
Microsoft.Office.Interop.Outlook._Application objOutlook; //declare Outlook application
objOutlook = new Microsoft.Office.Interop.Outlook.Application(); //create it
Microsoft.Office.Interop.Outlook._NameSpace objNS = objOutlook.Session; //create new session
Microsoft.Office.Interop.Outlook.MAPIFolder oAllPublicFolders; //what it says on the tin
Microsoft.Office.Interop.Outlook.MAPIFolder oPublicFolders; // as above
Microsoft.Office.Interop.Outlook.MAPIFolder objContacts; //as above
Microsoft.Office.Interop.Outlook.Items itmsFiltered; //the filtered items list
oPublicFolders = objNS.Folders["Public Folders"];
oAllPublicFolders = oPublicFolders.Folders["All Public Folders"];
objContacts = oAllPublicFolders.Folders["Global Contacts"];
itmsFiltered = objContacts.Items.Restrict(strFilter);//restrict the search to our filter terms
for (int i = 1; i <= itmsFiltered.Count; i++) //loop through filtered items
{
//do stuff
}
Все хорошо и прекрасно.То, что я хотел бы также сделать, - это версия этого, чтобы получить один определенный контакт, основанный на каком-то уникальном идентификаторе ... как бы я это сделал?
Есть ли какое-то поле уникального идентификатора, которое я могу использовать для получения контактов?И более быстрый метод, чем Restrict () (который может быть довольно медленным - у нас тысячи контактов)?
2: есть ли способ обойти Outlook 2003 "Программа пытается получить доступ к адресам электронной почтыВы сохранили в Outlook. Вы хотите разрешить это? "диалоговое окно, которое появляется каждый раз, когда я запускаю этот код?Я знаю, что это должна быть функция безопасности, поэтому я предполагаю, что ответом может быть «нет», но я все равно решил спросить.