Переместите несколько писем в папку в другом магазине

Я использую библиотеку Outlook Redemption (http://www.dimastr.com/redemption/home.htm) для моей надстройки Outlook. Я хочу переместить несколько писем из учетной записи Exchange в магазин PST.

onlineAccountFolder.Items.MoveMultiple(onlineEntryIds, targetFolderInPstStore);

Письма исходной папки были вырезаны из учетной записи Exchange, но не вставлены в целевую папку. Они ушли.

Я попробовал ту же операцию с папкой учетной записи Exchange в том же магазине, и операция перемещения прошла успешно. Элементы были перемещены в целевую папку.

Нет перегрузки метода MoveMultiple, в котором я могу определить StoreID.


person pego    schedule 04.07.2019    source источник
comment
Правильно ли работает метод MoveMultiple в том же магазине?   -  person Eugene Astafiev    schedule 04.07.2019
comment
@EugeneAstafiev Да, операция перемещения работает нормально в том же магазине   -  person pego    schedule 04.07.2019
comment
Боюсь, вам придется использовать Move метод отдельного элемента для правильного перемещения элементов.   -  person Eugene Astafiev    schedule 04.07.2019
comment
Было ли уже открыто хранилище PST в текущем сеансе MAPI? Сколько идентификаторов исходных записей было указано? MoveMultiple - это не что иное, как тонкая оболочка вокруг IMAPIFolder :: CopyMessages (..., MESSAGE_MOVE)   -  person Dmitry Streblechenko    schedule 04.07.2019


Ответы (2)


У меня не было проблем со следующим скриптом, выполняемым из OutlookSpy (нажмите кнопку «Редактор скриптов» на панели инструментов OutlookSpy, вставьте скрипт, нажмите «Выполнить»).

Сценарий перемещает сообщения, выбранные в Outlook, в папку, возвращаемую методом PickFolder. Работает должным образом с целевыми папками PST и Exchange.

set Session = CreateObject("Redemption.RDOSession")
Session.MAPIOBJECT = Application.Session.MAPIOBJECT
dim messages()
set sel = Application.ActiveExplorer.Selection
redim messages(sel.Count-1)
for i = 1 to sel.Count
  messages(i-1) = sel.Item(i).EntryID
next
set targetFolder = Session.PickFolder
set sourceFolder = Session.GetFolderFromID(Application.ActiveExplorer.CurrentFolder.EntryID)
sourceFolder.Items.MoveMultiple messages, targetFolder
person Dmitry Streblechenko    schedule 04.07.2019
comment
Спасибо за вашу поддержку - я снова проверил код и исправил некоторые проблемы - возможно, некоторые конфигурации были неправильными, и поэтому операция перемещения не сработала. Теперь со всеми исправлениями все работает нормально :-) кстати. ваша библиотека безумно быстрая - молодец !! - person pego; 04.07.2019

Используйте метод Move класса RDOMail для перемещения элементов между магазинами в Outlook.

person Eugene Astafiev    schedule 04.07.2019
comment
Спасибо за ответ - я уже думал об этом. Я ищу все письма в своей папке через MAPITABLE (+ фильтр) и хочу переместить только некоторые из них. Есть ли способ переместить отдельный почтовый элемент без полной загрузки RDOMail? - person pego; 04.07.2019
comment
Похоже, нет, если метод MoveMultiple не работает между магазинами. - person Eugene Astafiev; 04.07.2019