EWS Item.Copy вызывает ErrorAccessDenied

Я хочу копировать элементы между почтовыми ящиками, используя управляемый API EWS. Тут я столкнулся со странной ситуацией.

Когда я пытаюсь сначала получить папку назначения, а затем скопировать элемент, используя его идентификатор, я получаю сообщение об ошибке ErrorAccessDenied.

this.exchangeService.ImpersonatedUserId = new ImpersonatedUserId(ConnectingIdType.SmtpAddress, "[email protected]");
var folder = Folder.Bind(this.exchangeService, WellKnownFolderName.Inbox);
item.Copy(folder.Id);

This gets an error

Если я создам экземпляр объекта FolderId, указав известное имя папки (Входящие) и имя почтового ящика, у меня не возникнет проблем.

var folderId = new FolderId(WellKnownFolderName.Inbox, new Mailbox("[email protected]"));
item.Copy(folderId);

This works

Является ли такое поведение преднамеренным? Или я могу использовать папку назначения, а не только известную?


person Ralfeus    schedule 16.03.2014    source источник


Ответы (1)


Я считаю, что это поведение по дизайну. В первом примере вызывающая учетная запись (acct1) выдает себя за acct2. Я думаю, что запрос обрабатывается как acct2, пытающийся привязаться к папке входящих сообщений acct1, поскольку учетные данные вызова связаны с acct1. Контекст для вызовов основан на идентификаторах, которые содержат SMTP-адрес целевого почтового ящика.

Ваш второй пример явно определяет почтовый ящик, на который следует ориентироваться. Все последующие идентификаторы, доступ к которым осуществляется на основе этого идентификатора папки, будут иметь контекст [email protected].

Я думаю, вы можете изменить свой первый вызов, чтобы он работал:

var folder = Folder.Bind(this.exchangeService, new FolderId(WellKnownFolderName.Inbox, new Mailbox("[email protected]")));

Я знаю, что вы копируете в папку в почтовый ящик [email protected]. В чьем почтовом ящике находится «предмет»? Я не могу вспомнить, работает ли использование олицетворения для копирования через почтовые ящики. Мне интересно узнать, как это работает для вас.

person Michael Mainer    schedule 17.03.2014