Vb.net Outlook在已发送邮件文件夹getfirst from last weeks items中选择第一项,而不是第一项

Vb.net Outlook在已发送邮件文件夹getfirst from last weeks items中选择第一项,而不是第一项,vb.net,outlook,vsto,Vb.net,Outlook,Vsto,在“我的Outlook加载项”中,在将项目添加到“已发送邮件”文件夹时,会运行子文件夹。然后将此项目存档到用户定义的文件夹(在邮件项目打开时完成)。在下面的代码中,它显示了如何获取send item文件夹中的第一个项目 Public Sub mySentItems_ItemAdd() Handles mySentItems.ItemAdd 'variables Dim AppOutlook As New Outlook.Application Dim ns As Out

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

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”中得到文件夹中的第一项。在下面的图片中,我得到的物品用黄色标记,我想要的物品用黑线划线。有人知道我如何解决这个问题吗


首先,无需创建新的Outlook
应用程序
实例:

Dim AppOutlook As New Outlook.Application
相反,您应该使用外接程序类的
应用程序
属性

无论如何,事件提供了一个参数,表示添加到文件夹中的项

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

除此之外,它看起来更好,它不能解决我的问题。。程序在正确的文件夹中搜索,但没有从该文件夹中获取第一个项目(如我在帖子中的屏幕截图所示)