Мне нужно перебрать элементы MailItem
внутри a Selection
и прочтите их EntryID
и StoreID
, чтобы иметь возможность повторно получить почтовые отправления позже (для фоновой обработки посредством Redemption). Есть ли способ получить StoreID
для MailItem
напрямую?
Я знаю, что его можно получить с помощью свойства StoreID
его родительского Folder
; однако это кажется довольно неэффективным, поскольку для каждого элемента необходимо создать экземпляр (и освободить) COM-объект родительской папки. Есть ли более эффективный способ добиться этого?
Изменить: я не могу использовать _ 9_, поскольку оно было представлено только в Outlook 2007, и мне нужно поддерживать Outlook 2003. Кроме того, Сью Мошер утверждает:
Объект
Parent
вSelection
будетExplorer
, поэтому вы можете использоватьSelection.Parent.CurrentFolder.Store
.
Однако, когда кто-то выполняет поиск по «Все элементы Outlook», кажется, что CurrentFolder
всегда будет указывать на папку поиска в основном хранилище, которым обычно является почтовый ящик Exchange:
\\Mailbox - <username>\search folders\All Outlook Items
Поскольку при поиске могут быть найдены элементы в других магазинах, CurrentFolder.Store
не обязательно будет соответствовать хранилищу выбранных элементов, что делает этот подход ненадежным.