У меня два сервера: S1 — Exchange2010, S2 — Exchange 2007.
Оба сервера находятся в одном домене в ActiveDirectory.
Идея состоит в том, чтобы иметь «служебную учетную запись» на S1 с включенным олицетворением пользователей с обоих серверов. Мое приложение использует учетные данные «служебной учетной записи», а затем начинает перебирать список SMTP-адресов. Он олицетворяет каждый smtp-адрес и выполняет некоторую обработку содержимого почтового ящика этой учетной записи.
Это теория, теперь время для проблем.
Я могу подключиться как учетная запись службы и получить доступ к своему почтовому ящику, но когда я пытаюсь получить доступ к почтовому ящику олицетворенного пользователя, я получаю исключение, говорящее, что «SMTP-адрес не имеет связанного с ним почтового ящика». И исключение происходит для обоих серверов.
Я начал отлаживать и гуглить о возможных причинах и на пустом месте изменил это:
svc.ImpersonatedUserId = new ImpersonatedUserId(ConnectingIdType.SmtpAddress, smtpAddress);
в это:
svc.ImpersonatedUserId = new ImpersonatedUserId(ConnectingIdType.PrincipalName, smtpAddress);
и это сработало, что очень странно, потому что месяц назад у меня была другая настройка только с одним сервером, и использование перечисления SmtpAddress работало, и мой админ ругается, что конфигурация имперсонации точно такая же.
Теперь, если бы кто-нибудь мог дать мне несколько советов о том, почему я не могу использовать ConnectingIdType.SmtpAddress и что я должен сделать, чтобы он мог работать?