Mike Eghtebas
asked on
Email unique identifier (Primary Key) in Outlook???
Do the emails in Outlook have some unique identifier (Primary Key)?
In Access environment, I am reading email information and storing them in a table. I wonder it there is a unique identifier for each email. I want to read its value and store in my table along the rest of information on the emails (like SendOn, SentBy, Subject, etc.).
I already have the code to read email data. If applicable, what is the field name for "email unique identifier"?
Thank you.
In Access environment, I am reading email information and storing them in a table. I wonder it there is a unique identifier for each email. I want to read its value and store in my table along the rest of information on the emails (like SendOn, SentBy, Subject, etc.).
I already have the code to read email data. If applicable, what is the field name for "email unique identifier"?
Thank you.
ASKER
With strQuery = "[EntryID] = '" & strEntryID & "'"
I am getting the following error at:
Set olkItem = OlkFolder.Items.Find(strQu ery) '<--- ERORRS HERE *********
How can I correct this.
Thanks,
Mike
I am getting the following error at:
Set olkItem = OlkFolder.Items.Find(strQu
How can I correct this.
Thanks,
Mike
Public Sub OpenEmail(lngEmailID As Long)
Dim strEntryID As String
Dim lngFolderID As Long
Dim strFolder As String
lngFolderID = DLookup("EmailFolder_ID", "tEmails", "EmailID=" & lngEmailID)
strFolder = DLookup("FolderPath", "tOLK_Folders", "ID=" & lngFolderID)
strEntryID = DLookup("EntryID", "tEmails", "EmailID=" & lngEmailID)
Call SearchForItem(strEntryID, strFolder)
End Sub
Public Sub SearchForItem(strEntryID As String, strOlkFolder As String)
Dim obj_CurrentOlkFolder As Outlook.MAPIFolder
Dim olkApp As Object, _
olkNS As Object, _
OlkFolder As Object, _
olkItem As Object, _
strQuery As String
Set olkApp = GetObject(, "Outlook.Application")
Set olkNS = olkApp.Session
Set OlkFolder = GetOutlookFolder(strOlkFolder)
strQuery = "[EntryID] = '" & strEntryID & "'"
Set olkItem = OlkFolder.Items.Find(strQuery) '<--- ERORRS HERE *********
If TypeName(olkItem) = "nothing" Then
MsgBox "No match found"
Else
olkItem.Display
End If
Set OlkFolder = Nothing
Set olkNS = Nothing
Set olkApp = Nothing
End Sub
ASKER
Following is a sample strQuery:
[EntryID] = '0000000088A29984A2A46240B4D83F2C6FEE9F560700CD46E9B936EFE5479CB85F1F510A078600000036EF4B0000FDA9D25B22E75D4E802E9D3D59692152000000DA44560000'
ASKER
I forgot to submit the error description:
The property EntryID in the condition is not valid.
I was thinking EntryID will be recognized. Why it is not?
Mike
The property EntryID in the condition is not valid.
I was thinking EntryID will be recognized. Why it is not?
Mike
Use olkNS.GetItemFromID to open an item.
EntryID is unique property and you don't need to use it in search.
This property is used to open objects in an Outlook store. That is by design.
In the underlying store (MAPI store provider) you open object by using
IMAPISession::OpenEntry function.
This property is used to open objects in an Outlook store. That is by design.
In the underlying store (MAPI store provider) you open object by using
IMAPISession::OpenEntry function.
ASKER
Do you mean like:
Public Sub SearchForItem(strEntryID As String, strOlkFolder As String)
'not used--------------^
Dim obj_CurrentOlkFolder As Outlook.MAPIFolder
Dim olkApp As Object, _
olkNS As Object, _
OlkFolder As Object, _
olkItem As Object, _
strQuery As String
Set olkApp = GetObject(, "Outlook.Application")
Set olkNS = olkApp.Session
olkNS.GetItemFromID(strEnt ryID) '<------******
Set OlkFolder = Nothing
Set olkNS = Nothing
Set olkApp = Nothing
End Sub
?
Public Sub SearchForItem(strEntryID As String, strOlkFolder As String)
'not used--------------^
Dim obj_CurrentOlkFolder As Outlook.MAPIFolder
Dim olkApp As Object, _
olkNS As Object, _
OlkFolder As Object, _
olkItem As Object, _
strQuery As String
Set olkApp = GetObject(, "Outlook.Application")
Set olkNS = olkApp.Session
olkNS.GetItemFromID(strEnt
Set OlkFolder = Nothing
Set olkNS = Nothing
Set olkApp = Nothing
End Sub
?
yes
And you may need to open all stores. Because if store that holds this object is not opened the call will fail.
ASKER
It doen't produce error but it doesn't open any email either.
re:> need to open all stores
I don't know what this means. Here, what do you mean by store and how do I know it is open?
Thanks,
Mike
re:> need to open all stores
I don't know what this means. Here, what do you mean by store and how do I know it is open?
Thanks,
Mike
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
Beautiful!
Thank you,
Mike
Thank you,
Mike
ASKER
doublebug,
I have a follow-up question at:
https://www.experts-exchange.com/questions/23785451/With-a-double-click-open-the-email-if-it-is-closed-and-close-it-if-already-open.html?anchorAnswerId=22635227#a22635227
I appreciated an input from you.
Mike
I have a follow-up question at:
https://www.experts-exchange.com/questions/23785451/With-a-double-click-open-the-email-if-it-is-closed-and-close-it-if-already-open.html?anchorAnswerId=22635227#a22635227
I appreciated an input from you.
Mike
EntryID. It is binary property but via Outlook Object Model it is available as hex encoded string. You can use this property to open message via GetItemFromID method. The behavior of this identifier is a bit different for PST and Exchange providers.
When message is moved between folders in the same store PST EntryID stays the same.
In Exchange EntryID changes.
Also there is PR_SEARCH_KEY property. It is not available via OOM but you can use some IMAPIProp interface wrappers like Redemption (http://www.dimastr.com/redemption/). This property says the same if message is moved between folders but then message is copied copy has the same value.