A
Andy Bowles
Given a mailItem which has .Sent = True, I want to determine whether it
was outbound (ie sent from this mailbox), or inbound (ie sent to this
mailbox).
I can't rely on the location of the message, because it may have been
moved from the Inbox or from Sent Items. I'm also not keen on using
the sender/recipient addresses, because of the possibility of someone
changing their sender address, or sending an email to themselves.
Testing for the presence of PR_RECEIVED_BY_ADDRTYPE seems to work:
Public Function IsInboundMessage(itm As Outlook.MailItem) As Boolean
Dim ssn As New MAPI.Session
Dim msg As MAPI.Message
Dim typ As String
ssn.Logon , , False, False, 0 ' Use the existing Outlook session
Set msg = ssn.GetMessage(itm.EntryID, itm.Parent.StoreID)
On Error Resume Next
typ = msg.Fields(CdoPR_RECEIVED_BY_ADDRTYPE).Value
If Err.Number <> 0 Then
Err.Clear
IsInboundMessage = False
Else
IsInboundMessage = True
End If
On Error GoTo 0
ssn.Logoff
Set ssn = Nothing
Set msg = Nothing
End Function
Is this the right way to do this? And is it reliable?
Thanks.
Andy Bowles
was outbound (ie sent from this mailbox), or inbound (ie sent to this
mailbox).
I can't rely on the location of the message, because it may have been
moved from the Inbox or from Sent Items. I'm also not keen on using
the sender/recipient addresses, because of the possibility of someone
changing their sender address, or sending an email to themselves.
Testing for the presence of PR_RECEIVED_BY_ADDRTYPE seems to work:
Public Function IsInboundMessage(itm As Outlook.MailItem) As Boolean
Dim ssn As New MAPI.Session
Dim msg As MAPI.Message
Dim typ As String
ssn.Logon , , False, False, 0 ' Use the existing Outlook session
Set msg = ssn.GetMessage(itm.EntryID, itm.Parent.StoreID)
On Error Resume Next
typ = msg.Fields(CdoPR_RECEIVED_BY_ADDRTYPE).Value
If Err.Number <> 0 Then
Err.Clear
IsInboundMessage = False
Else
IsInboundMessage = True
End If
On Error GoTo 0
ssn.Logoff
Set ssn = Nothing
Set msg = Nothing
End Function
Is this the right way to do this? And is it reliable?
Thanks.
Andy Bowles