Мы пытаемся получить доступ к папке Отправленные в Outlook 2007 (с использованием Exchange) , но проверка для TypeOf(i) Is Outlook.MailItem
в приведенном ниже фрагменте кода всегда возвращает значение False.
Мы знаем, что у нас правильная папка, потому что тест для items.Count
возвращает правильное количество почтовых отправлений.
Входящие сообщения в порядке. Если мы изменим папку с olFolderSentMail
на olFolderInbox
, тест для TypeOf(i) Is Outlook.MailItem
пройдет, и мы с удовольствием покажем нам тему.
Dim app As Outlook.Application = Nothing
Dim ns As Outlook.NameSpace = Nothing
Dim siFolder As Outlook.Folder = Nothing
Dim items As Outlook.Items = Nothing
app = New Outlook.Application()
ns = app.Session
siFolder = CType(ns.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderSentMail), Outlook.Folder)
items = siFolder.Items
MsgBox(items.Count)
For Each i In items
If TypeOf (i) Is Outlook.MailItem Then
Dim mailitem As Outlook.MailItem
mailitem = CType(i, Outlook.MailItem)
MsgBox(mailitem.Subject)
Else
MsgBox("not a mailitem")
End If
Next
Обновление
@ Ответ Роба ниже, да, определенно помог. Но я все еще озадачен. Важнейшая вещь, которую делает код Роба, это тестирование на .MessageClass = "IPM.Note"
. Если я включу это, то последующий тест для TypeOf x Is MailItem
будет успешным. Если я заменю тест @ Роба для .MessageClass = "IPM.Note"
на If True Then
, то тот же код все еще выполняется, но более поздний тест для Is MailItem завершается неудачно. Это как если бы тестирование .MessageClass
автоматически разрешало объект в MailItem.
Кроме того, отправленные элементы не содержат никаких приглашений на собрания, поэтому проверка в любом случае может показаться ненужной.