У меня есть два сервера:
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 работал enum, и мой админ клянется, что конфигурация олицетворения точно такая же.
Теперь, если кто-нибудь может дать мне несколько советов о том, почему я не могу использовать ConnectingIdType.SmtpAddress и что я должен сделать, чтобы сделать возможным работу?