Vb.net Outlook 在已发送邮件文件夹中优先选择上周的项目而不是第一个项目

Vb.net Outlook pick first in sent mail folder getfirst from last weeks items instead of the first item

在我的 Outlook 插件中,当一个项目被添加到已发送邮件文件夹时,子项是 运行。然后将此项目存档到用户定义的文件夹(在打开邮件项目时完成)。在下面的代码中,它显示了我如何获取发送项目文件夹中的第一个项目。

Public Sub mySentItems_ItemAdd() Handles mySentItems.ItemAdd

    'variables
    Dim AppOutlook As New Outlook.Application
    Dim ns As Outlook.NameSpace = AppOutlook.Session
    Dim siFolder As Outlook.Folder = CType(ns.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderSentMail), Outlook.Folder)

    'load the newly added mail as mailitem
    Dim mailitem As MailItem = siFolder.Items.GetFirst

    MsgBox(mailitem.Subject.ToString)


End Sub

几周前它运行良好,但现在它没有获取文件夹中的第一项,而是从子文件夹 "Last week" 获取文件夹中的第一项。在下图中,我得到的项目用黄色标记,我想要的项目用黑线下划线。有谁知道我该如何解决这个问题?

首先,不需要新建OutlookApplication实例:

Dim AppOutlook As New Outlook.Application

相反,您应该使用加载项的 Application 属性 class。

无论如何,Items.ItemAdd 事件提供了一个参数,表示添加到文件夹的项目。

Public WithEvents myOlItems As Outlook.Items 

Public Sub Initialize_handler()  
 Set myOlItems = Application.GetNamespace("MAPI").GetDefaultFolder(olFolderContacts).Items  
End Sub  

Private Sub myOlItems_ItemAdd(ByVal Item As Object)  
 Dim myOlMItem As Outlook.MailItem  
 Dim myOlAtts As Outlook.Attachments  
 Set myOlMItem = myOlApp.CreateItem(olMailItem)  
 myOlMItem.Save  
 Set myOlAtts = myOlMItem.Attachments  
 ' Add new contact to attachments in mail message  
 myOlAtts.Add Item, olByValue  
 myOlMItem.To = "Sales Team"  
 myOlMItem.Subject = "New contact"  
 myOlMItem.Send  
End Sub

好的,我明白了,最后添加的项目不是列表中的第一项而是最后一项,所以不是:

    Dim mailitem As MailItem = siFolder.Items.GetFirst

我需要使用

    Dim mailitem As MailItem = siFolder.Items.GetLast