В настоящее время я работаю над проектом, в котором мне нужно получить информацию от общих контактов (имя, почтовый адрес и т. Д.), Чтобы сравнить несколько общих папок и найти повторяющиеся записи.
Я пишу код в Visual Studio 2015. Программа представляет собой просто консольное приложение, которое создает лист Excel, где отмечены дублирующиеся контакты.
Сервер Exchange Server 2010 SP1.
Контакты доступны по электронной почте.
У меня нет проблем, чтобы получить доступ к своим контактам.Но я не могу добраться до папок, которые мне доступны.
Я пытался следовать этому Руководству .Но, к сожалению, эта строка дает мне исключение nullpointer.
NameResolutionCollection ncCol = service.ResolveName(lnLegDN, ResolveNameSearchLocation.DirectoryOnly, true);
if (ncCol.Count > 0)
И в дальнейшем я не совсем понимаю, что эта часть должна делать, так что я не могу это исправить.Я впервые работаю с EWS Managed API.
После изменения кода я могу получить доступ к папке contacts из другого почтового ящика.Но это не та папка, которая мне доступна.
Итак, мой вопрос, как я могу получить папку контактов с именем "CheckForDuplicates", например.Есть ли способ?
Вот код, который я изменил в приведенном выше примере.Я получаю имя владельца почтового ящика и затем ищу их контакты.После этого я вызываю процедуру, которая получает необходимую информацию от всех контактов в этой папке.
foreach (Item itItem in fiResults.Items)
{
object WlinkStoreEntryId = null;
if (itItem.TryGetProperty(PidTagWlinkStoreEntryId, out WlinkStoreEntryId))
{
string lookup = itItem.Subject;
string[] lookupArr = lookup.Trim().Split(new Char[] {'-'});
NameResolutionCollection ncCol = service.ResolveName(lookupArr[0], ResolveNameSearchLocation.DirectoryOnly, true);
if (ncCol.Count > 0)
{
try
{
Console.WriteLine(itItem.Subject);
FolderId SharedContactsId = new FolderId(WellKnownFolderName.Contacts, ncCol[0].Mailbox.Address);
Folder SharedContactFolder = Folder.Bind(service, SharedContactsId);
rtList.Add(ncCol[0].Mailbox.Address, SharedContactFolder);
}
catch (Exception exception)
{
Console.WriteLine(exception.Message);
}
}
}
}