Trekkie_RIF
Да, вы правы, EntryID меняется.
Я использовал идентификатор сообщения, но вы можете увидеть/получить его только в заголовке сообщения.
Public OlSentFolder As Outlook.Folder ' Global variable
Dim olPA As Outlook.PropertyAccessor
Dim messageID as String
Dim myOutlook As Outlook.Application
Dim olNamespace As Outlook.NameSpace
Set myOutlook = GetObject(, "Outlook.Application")
Set olNamespace = myOutlook.GetNamespace("MAPI")
Set OlSentFolder = olNamespace.GetDefaultFolder(olFolderSentMail)
' get the PropertyAccessor
' i is the index of the mail message you are working with
Set olPA = olSentFolder.Items(i).PropertyAccessor
' Message-ID, specified by RFC 2822
' cannot use EntryID - it changes
messageID = olPA.GetProperty("http://schemas.microsoft.com/mapi/proptag/0x1035001E")
Идентификатор сообщения будет выглядеть примерно так: <008401cef84c$5a2d3c40$0e87b4c0$@company.com>
Вот некоторые примеры кода, чтобы получить сообщение, код сообщения:
Function GetEmailItemByID(id As String) As Outlook.MailItem
Dim findItems As Outlook.Items
Dim query As String
query = "@SQL=""http://schemas.microsoft.com/mapi/proptag/0x1035001E"" = '" & id & "'"
' get email object by message ID
Set findItems = OlSentFolder.Items.Restrict(query)
If findItems.Count <> 1 Then
Debug.Print "Something is wrong - MessageID not found or >1 found."
Else
Set GetEmailItemByID = findItems.Item(1)
End If
End Function