这是这个问题的一个子问题main https://stackoverflow.com/questions/14418643/in-ms-outlook-report-all-sent-messages-that-havent-received-replies问题
我可以使用以下函数循环获取其他文件夹的互联网标头
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
但不处理“已发送邮件”文件夹,有人对此有经验或参考吗?
FAIL该属性不返回任何内容
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
EDIT如果无法实现,我可以在电子邮件中密送自己。
PR_TRANSPORT_MESSAGE_HEADERS 仅适用于从 POP3 帐户收到的邮件。它永远不会在传出消息上设置。
另外,绝对没有理由循环遍历所有文件夹 - 使用 Application.Session.GetDefaultFolder(olFolderSentMail) - 即使“已发送邮件”文件夹名称已本地化,它也可以工作。
其次,你真的需要处理吗?all文件夹中的项目?
检查是否设置了 PR_INTERNET_MESSAGE_ID(DASL 名称 schemas.microsoft.com/mapi/proptag/0x1035001F)属性。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)