Как перебрать Outlook Inbox по дате? - Outlook OLE Automation

Я хотел бы повторить Outlook Inbox, и я с Руби.

Я нашел некоторую полезную информацию здесь, но порядок сообщений в папке "Входящие" не упорядочен RecevedTime(свойство для объекта Item OLE). Метод GetLast может найти последнее сообщение, но метод GetPrevious не работает, как я ожидал.

require 'win32ole'

outlook = WIN32OLE.new('Outlook.Application')
mapi    = outlook.GetNameSpace('MAPI')
inbox   = mapi.GetDefaultFolder(6)

inbox.Items.GetLast # return the latest message, maybe
inbox.Items.GetPrevious # return nil object and then, what's this method for?
inbox.Items.Sort('ReceivedTime')    # is this right usage? if so, what's next?

Как я могу перебирать сообщения в папке "Входящие" от самых последних до самых старых?

1 ответ

Решение
require 'win32ole'

ol = WIN32OLE.new('Outlook.Application')
class OC; end
WIN32OLE.const_load(ol, OC)

mapi = ol.GetNameSpace("MAPI")
inbox = mapi.GetDefaultFolder(OC::OlFolderInbox)
items = inbox.items
items.sort('ReceivedTime', OC::OlAscending)

items.getfirst
items.getnext

items.getlast
items.getprevious
Другие вопросы по тегам