这是此main问题的子问题
我可以使用以下功能循环获取其他文件夹的互联网标题
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
但是没有处理“已发送邮件”文件夹,任何人都有这方面的经验或参考?
失败该属性不返回任何内容
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
编辑如果无法实现,我可以在电子邮件中自行BCC。
答案 0 :(得分:5)
PR_TRANSPORT_MESSAGE_HEADERS仅适用于从POP3帐户收到的邮件。它永远不会在传出消息上设置。 此外,绝对没有理由循环遍历所有文件夹 - 使用Application.Session.GetDefaultFolder(olFolderSentMail) - 即使“已发送项目”文件夹名称已本地化,它也将起作用。 其次,您真的需要处理文件夹中的所有项吗?
检查是否设置了PR_INTERNET_MESSAGE_ID(DASL名称schemas.microsoft.com/mapi/proptag/0x1035001F)属性。