Repost: Comparing Senders with Contacts

  • Thread starter Thread starter Patrick Pirtle
  • Start date Start date
P

Patrick Pirtle

I've written an app that redirects incoming emails to
different folders based upon categories assigned in
my contacts. I use the lines:

strAddress = oSafeMail.Sender.Address
For i = 1 To 3
strFind = "[Email" & i & "Address] = """ & strAddress & """ and
[FileAs] <> ""Group"""
Set oContact = allContacts.Find(strFind)

to loop through my contacts looking for the sender.

My problem is that, on occasion, this fails to find the
person in my contacts even though they're in there.
When I start trying to debug the problem, I start
getting confused as to just what is being compared.



For example, I might have a contact with:

Email... = (e-mail address removed)"
Display as: "Susan M.Johnson P.E. ([email protected])"

I receive an email from her, and it displays in my inbox
as being from "Susan M. Johnson". If I open the email,
the From field contains "Susan M. Johnson". If I
try to look at the header through the View\Options menu,
it doesn't show any header at all, as this came through
the Exchange Server.

The search string my app builds looks like:
"[Email1Address] = "/O=COMPANY/OU=FIRST ADMINISTRATIVE
GROUP/CN=RECIPIENTS/CN=SMJ" and [FileAs] <> "Group""

I assume the "SMJ" above is because her email is
actually stored as (e-mail address removed) and Exchange
has "Susan M. Johnson" as some kind of alias.(?)

My app correctly moves this one to the correct folder.




Now, I have another contact with:

Email... = "(e-mail address removed)"
Display as: "(e-mail address removed)"

I receive an email from him, and it displays in my inbox
as being from "Rick Jones". If I open the email email, the
From field contains "Rick Jones [[email protected]]".
If I look at the header through the View\Options menu,
it shows it to be from "Rick Jones <[email protected]>".

The search string my app builds looks like:

"[Email1Address] = (e-mail address removed) and [FileAs] <> "Group""

My app correctly moves this one to the correct folder.




And finally, I have a contact with:

Email... = "(e-mail address removed)"
Display as: "Paul A Smith P.E. ([email protected])"

I receive an email from him VIA BLACKBERRY, and it
displays in my inbox as being from "Paul Smith". If I open
the email, the From field contains "Paul Smith [[email protected]]".
If I try to look at the header through the View\Options menu,
it shows it to be from:

"=?utf-8?B?QnJhZCBDYW1lcm9u?=" <[email protected]>"

The search string it is building looks like:

"[Email1Address] = (e-mail address removed) and [FileAs] <> "Group""

My app FAILS to find this person in my contacts.




I've tried modifying my contact's "Email...", "Display as:",
etc. every which way I could, but can't quite figure out what
is really being compared. Is there a better way to search
for these? TIA for any help and suggestions.
____________________________________________
The impossible just takes a little longer...
 
This looks like it's using Redemption code, is that true?

If so why not use oSafeMail.Sender.SmtpAddress instead? That will always
return an SMTP address even if the sender has an Exchange distinguished name
as their email address and it avoids the displayname problem.




Patrick Pirtle mka com> said:
I've written an app that redirects incoming emails to
different folders based upon categories assigned in
my contacts. I use the lines:

strAddress = oSafeMail.Sender.Address
For i = 1 To 3
strFind = "[Email" & i & "Address] = """ & strAddress & """ and
[FileAs] <> ""Group"""
Set oContact = allContacts.Find(strFind)

to loop through my contacts looking for the sender.

My problem is that, on occasion, this fails to find the
person in my contacts even though they're in there.
When I start trying to debug the problem, I start
getting confused as to just what is being compared.



For example, I might have a contact with:

Email... = (e-mail address removed)"
Display as: "Susan M.Johnson P.E. ([email protected])"

I receive an email from her, and it displays in my inbox
as being from "Susan M. Johnson". If I open the email,
the From field contains "Susan M. Johnson". If I
try to look at the header through the View\Options menu,
it doesn't show any header at all, as this came through
the Exchange Server.

The search string my app builds looks like:
"[Email1Address] = "/O=COMPANY/OU=FIRST ADMINISTRATIVE
GROUP/CN=RECIPIENTS/CN=SMJ" and [FileAs] <> "Group""

I assume the "SMJ" above is because her email is
actually stored as (e-mail address removed) and Exchange
has "Susan M. Johnson" as some kind of alias.(?)

My app correctly moves this one to the correct folder.




Now, I have another contact with:

Email... = "(e-mail address removed)"
Display as: "(e-mail address removed)"

I receive an email from him, and it displays in my inbox
as being from "Rick Jones". If I open the email email, the
From field contains "Rick Jones [[email protected]]".
If I look at the header through the View\Options menu,
it shows it to be from "Rick Jones <[email protected]>".

The search string my app builds looks like:

"[Email1Address] = (e-mail address removed) and [FileAs] <> "Group""

My app correctly moves this one to the correct folder.




And finally, I have a contact with:

Email... = "(e-mail address removed)"
Display as: "Paul A Smith P.E. ([email protected])"

I receive an email from him VIA BLACKBERRY, and it
displays in my inbox as being from "Paul Smith". If I open
the email, the From field contains "Paul Smith [[email protected]]".
If I try to look at the header through the View\Options menu,
it shows it to be from:

"=?utf-8?B?QnJhZCBDYW1lcm9u?=" <[email protected]>"

The search string it is building looks like:

"[Email1Address] = (e-mail address removed) and [FileAs] <> "Group""

My app FAILS to find this person in my contacts.




I've tried modifying my contact's "Email...", "Display as:",
etc. every which way I could, but can't quite figure out what
is really being compared. Is there a better way to search
for these? TIA for any help and suggestions.
____________________________________________
The impossible just takes a little longer...
 
Ken -
Yes, I *am* using Redemption. Many thanks for the
suggestion. I'll give that a try today.

- Patrick

This looks like it's using Redemption code, is that true?

If so why not use oSafeMail.Sender.SmtpAddress instead? That will
always return an SMTP address even if the sender has an Exchange
distinguished name as their email address and it avoids the
displayname problem.

[snip]
 
____________________________________________
The impossible just takes a little longer...Ken Slovak - [MVP - Outlook]
wrote:
This looks like it's using Redemption code, is that true?

If so why not use oSafeMail.Sender.SmtpAddress instead? That will
always return an SMTP address even if the sender has an Exchange
distinguished name as their email address and it avoids the
displayname problem.

Patrick Pirtle mka com> said:
I've written an app that redirects incoming emails to
different folders based upon categories assigned in
my contacts. I use the lines:

strAddress = oSafeMail.Sender.Address
For i = 1 To 3
strFind = "[Email" & i & "Address] = """ & strAddress & """
and [FileAs] <> ""Group"""
Set oContact = allContacts.Find(strFind)

to loop through my contacts looking for the sender.

My problem is that, on occasion, this fails to find the
person in my contacts even though they're in there.
When I start trying to debug the problem, I start
getting confused as to just what is being compared.



For example, I might have a contact with:

Email... = (e-mail address removed)"
Display as: "Susan M.Johnson P.E. ([email protected])"

I receive an email from her, and it displays in my inbox
as being from "Susan M. Johnson". If I open the email,
the From field contains "Susan M. Johnson". If I
try to look at the header through the View\Options menu,
it doesn't show any header at all, as this came through
the Exchange Server.

The search string my app builds looks like:
"[Email1Address] = "/O=COMPANY/OU=FIRST ADMINISTRATIVE
GROUP/CN=RECIPIENTS/CN=SMJ" and [FileAs] <> "Group""

I assume the "SMJ" above is because her email is
actually stored as (e-mail address removed) and Exchange
has "Susan M. Johnson" as some kind of alias.(?)

My app correctly moves this one to the correct folder.




Now, I have another contact with:

Email... = "(e-mail address removed)"
Display as: "(e-mail address removed)"

I receive an email from him, and it displays in my inbox
as being from "Rick Jones". If I open the email email, the
From field contains "Rick Jones [[email protected]]".
If I look at the header through the View\Options menu,
it shows it to be from "Rick Jones <[email protected]>".

The search string my app builds looks like:

"[Email1Address] = (e-mail address removed) and [FileAs] <> "Group""

My app correctly moves this one to the correct folder.




And finally, I have a contact with:

Email... = "(e-mail address removed)"
Display as: "Paul A Smith P.E. ([email protected])"

I receive an email from him VIA BLACKBERRY, and it
displays in my inbox as being from "Paul Smith". If I open
the email, the From field contains "Paul Smith [[email protected]]".
If I try to look at the header through the View\Options menu,
it shows it to be from:

"=?utf-8?B?QnJhZCBDYW1lcm9u?=" <[email protected]>"

The search string it is building looks like:

"[Email1Address] = (e-mail address removed) and [FileAs] <> "Group""

My app FAILS to find this person in my contacts.




I've tried modifying my contact's "Email...", "Display as:",
etc. every which way I could, but can't quite figure out what
is really being compared. Is there a better way to search
for these? TIA for any help and suggestions.
____________________________________________
The impossible just takes a little longer...

--
 
Well, it *looks* as though using the .SMTPAddress
should work just fine. But, when I ran it, I could step
through the code and, although the SMTP address was
(e-mail address removed), and I have a contact with
(e-mail address removed) in all three of the email addresses, it
fails to find it.

So, I guess that brings me around to my original questions.
What, exactly, is being compared? Since the contacts are
being automatically deleted and refreshed from the
Exchange Server each night, could the email that's being
displayed in the three email addresses not be the email
that's *really* being compared?

Or, is there a better way to search the contacts?
____________________________________________
The impossible just takes a little longer...

This looks like it's using Redemption code, is that true?

If so why not use oSafeMail.Sender.SmtpAddress instead? That will
always return an SMTP address even if the sender has an Exchange
distinguished name as their email address and it avoids the
displayname problem.

Patrick Pirtle mka com> said:
I've written an app that redirects incoming emails to
different folders based upon categories assigned in
my contacts. I use the lines:

strAddress = oSafeMail.Sender.Address
For i = 1 To 3
strFind = "[Email" & i & "Address] = """ & strAddress & """
and [FileAs] <> ""Group"""
Set oContact = allContacts.Find(strFind)

to loop through my contacts looking for the sender.

My problem is that, on occasion, this fails to find the
person in my contacts even though they're in there.
When I start trying to debug the problem, I start
getting confused as to just what is being compared.



For example, I might have a contact with:

Email... = (e-mail address removed)"
Display as: "Susan M.Johnson P.E. ([email protected])"

I receive an email from her, and it displays in my inbox
as being from "Susan M. Johnson". If I open the email,
the From field contains "Susan M. Johnson". If I
try to look at the header through the View\Options menu,
it doesn't show any header at all, as this came through
the Exchange Server.

The search string my app builds looks like:
"[Email1Address] = "/O=COMPANY/OU=FIRST ADMINISTRATIVE
GROUP/CN=RECIPIENTS/CN=SMJ" and [FileAs] <> "Group""

I assume the "SMJ" above is because her email is
actually stored as (e-mail address removed) and Exchange
has "Susan M. Johnson" as some kind of alias.(?)

My app correctly moves this one to the correct folder.




Now, I have another contact with:

Email... = "(e-mail address removed)"
Display as: "(e-mail address removed)"

I receive an email from him, and it displays in my inbox
as being from "Rick Jones". If I open the email email, the
From field contains "Rick Jones [[email protected]]".
If I look at the header through the View\Options menu,
it shows it to be from "Rick Jones <[email protected]>".

The search string my app builds looks like:

"[Email1Address] = (e-mail address removed) and [FileAs] <> "Group""

My app correctly moves this one to the correct folder.




And finally, I have a contact with:

Email... = "(e-mail address removed)"
Display as: "Paul A Smith P.E. ([email protected])"

I receive an email from him VIA BLACKBERRY, and it
displays in my inbox as being from "Paul Smith". If I open
the email, the From field contains "Paul Smith [[email protected]]".
If I try to look at the header through the View\Options menu,
it shows it to be from:

"=?utf-8?B?QnJhZCBDYW1lcm9u?=" <[email protected]>"

The search string it is building looks like:

"[Email1Address] = (e-mail address removed) and [FileAs] <> "Group""

My app FAILS to find this person in my contacts.




I've tried modifying my contact's "Email...", "Display as:",
etc. every which way I could, but can't quite figure out what
is really being compared. Is there a better way to search
for these? TIA for any help and suggestions.
____________________________________________
The impossible just takes a little longer...
 
I don't think the existing contacts are being deleted every night when an
offline address book is synched.

If the contact you are comparing has an Exchange DN as their email address
that's what it is, not the SMTP address. I think that's the problem. Again,
with Redemption there are better ways to do what you want. For example, why
not use a filtered MAPITable? You can set up the filter on all 3 email
addresses in a Contacts table and check things that way, which would allow
you to use complex Or's to compare the email addresses.
 
Ken -
In checking with our IS guys, it turns out the contacts
are not actually being sync'd with the Exchange Server.
They're running an in-house-written application each
night that deletes all of the contacts with certain
categories from each employee's contacts, and then
replaces the deleted contacts with updated contacts
from the central office database (which is part of some
marketing database separate from Exchange).

So...

I'm looking into Redemptions MAPITable explanation
now--it looks *very* promising. As always, many thanks
for your help.
____________________________________________
The impossible just takes a little longer...

I don't think the existing contacts are being deleted every night
when an offline address book is synched.

If the contact you are comparing has an Exchange DN as their email
address that's what it is, not the SMTP address. I think that's the
problem. Again, with Redemption there are better ways to do what you
want. For example, why not use a filtered MAPITable? You can set up
the filter on all 3 email addresses in a Contacts table and check
things that way, which would allow you to use complex Or's to compare
the email addresses.
[snip]
 
Back
Top