如何在VBA中的Outlook-2007中的“已发送邮件”文件夹中获取Message-Id或标题

Lar*_*rry 4 outlook vba outlook-2007

这是这个主要问题的一个子问题

我可以使用以下功能循环获取其他文件夹的Internet标头

Sub testing()
Dim ns As Outlook.NameSpace
Dim folder As MAPIFolder
 Dim item As MailItem
Set ns = Session.Application.GetNamespace("MAPI")
Set folder = ns.GetDefaultFolder(olFolderInbox)

 For Each item In folder.Items

    If (item.Class = olMail) Then
        GetInetHeaders item
    End If
Next item

End Sub

Function GetInetHeaders(olkMsg As MailItem) As String

    ' Purpose: Returns the internet headers of a message.'

    ' Written: 4/28/2009'

    ' Author:  BlueDevilFan'

    ' Outlook: 2007'

    Const PR_TRANSPORT_MESSAGE_HEADERS = "http://schemas.microsoft.com/mapi/proptag/0x007D001E"

    Dim olkPA As Outlook.PropertyAccessor

   Set olkPA = olkMsg.PropertyAccessor

    GetInetHeaders = olkPA.GetProperty(PR_INTERNET_MESSAGE_ID)

    Debug.Print olkMsg.Subject
    Debug.Print GetInetHeaders


    Set olkPA = Nothing

End Function
Run Code Online (Sandbox Code Playgroud)

但是,如果没有在“已发送邮件”文件夹上工作,是否有人对此有经验或参考?

失败 ,物业一无所获

Sub testing2()
Dim item As MailItem
Set Store = Application.GetNamespace("MAPI").Folders
  For Each StoreFolder In Store

      For i = 1 To StoreFolder.Folders.Count
        If StoreFolder.Folders(i).Name = "Sent Items" Then
            For Each item In StoreFolder.Folders(i).Items
                If (item.Class = olMail) Then
                    GetInetHeaders item
                End If
            Next item
            Exit For
        End If
      Next
    Exit For

  Next
End Sub
Run Code Online (Sandbox Code Playgroud)

编辑如果无法实现,我可以在电子邮件中进行密件抄送。

Dmi*_*nko 5

PR_TRANSPORT_MESSAGE_HEADERS仅在从POP3帐户收到的邮件上可用。永远不会在传出消息上设置它。另外,绝对没有理由遍历所有文件夹-使用Application.Session.GetDefaultFolder(olFolderSentMail)-即使“已发送邮件”文件夹名称已本地化,它也将起作用。其次,您是否真的需要处理文件夹中的所有项目?

检查是否设置了PR_INTERNET_MESSAGE_ID(DASL名称为schemas.microsoft.com/mapi/proptag/0x1035001F)属性。