View Single Post
  #10  
Old June 26th 09, 07:42 AM posted to microsoft.public.outlook.program_vba
anindasen_0609[_2_]
external usenet poster
 
Posts: 15
Default Help with some issues in Outlook Plugin development

Hi Ken,

This is about the issue - "Name being returned by the mail object instead of
the Email ID" as I posted earlier.

I iterated through the Global Address List (GAL) as you suggested and
everything is ok as far as getting the email IDs in the GAL is concerned. But
the problem is something else.

There is a particular name that is being returned (Christopher Gillespie)
instead of the email ID which does not exist in any of the address books on
the server side. I think it is kept locally. You must have seen that when you
type an email ID which is not there in outlook, outlook saves it and prompts
it the next time you try to type it. If you double click on it, it pops up a
small form which has the title of "E-mail Properties" and in there you have
the fields "Display Name", "E-mail address", "E-mail type" with a button
called "Custom type" and another field called "Internet format".

I think that is where the display name can be changed and stored. I do not
know where Outlook is storing those email IDs. The guy who is facing the
problem must have changed the email ID of the contact Email ID to a name
("Christopher Gillespie" in this case) and that is what is being returned.

Does it make any sense? I hope it does. Where is outlook saving those
addresses and how can I catch hold of them? Please help.

Regards,
Aninda

"Ken Slovak - [MVP - Outlook]" wrote:

Sue's on vacation.

I see a few flaws in your code.

First of all, in an Outlook COM addin, never create a new
Outlook.Application object. Always use the Application object passed to you
in your startup code handler or in OnConnection.

Second, that code will only look at contacts. If a recipient is from the GAL
then you never will find anything.

As Sue recommended it's really best to work with the Recipients collection
and iterate that. You said that didn't work but didn't provide any
information as to why. Each Recipient object has an Address property .
That's what you should be using.

When the Recipient is part of an Exchange domain you won't get back an SMTP
style address, you'll get back an Exchange DN type address such as your
example: /O=DOMAIN/OU=FIRST ADMINISTRATIVE GROUP/CN=RE/ou=abcd.

In those cases you would need to convert the EX address into an SMTP
equivalent. Since you never mention which version or versions of Outlook you
are targeting it's hard to be specific as to how you would convert the
address. Take a look at
http://www.outlookcode.com/threads.a...essageid=13469 for some
suggestions as to how to do that. Note that since you're using managed code
(C#) the CDO option is not available to you, CDO is not supported and should
not be used with managed code.

You can also search at www.outlookcode.com using something like "convert
exchange address to smtp" to look at other forum threads on that topic.

--
Ken Slovak
[MVP - Outlook]
http://www.slovaktech.com
Author: Professional Programming Outlook 2007.
Reminder Manager, Extended Reminders, Attachment Options.
http://www.slovaktech.com/products.htm


"anindasen_0609" wrote in message
...
Thanks for your reply. I am sorry I could not reply earlier.

1) I think I created a confusion. I actually meant all the email fields
ie., From, To, Cc and Bcc. Wherever there is a name for a particular email
address
in the local address book, I am getting the name instead of the email ID.

My function to get email ID against the name is as below:

private string GetEmailID(ref string recipientName)
{
string recipientEmailID = null;
string myQuery = null;
myQuery = "[FullName] = '" + recipientName + "'";

// Create the Outlook application.
Outlook.Application oApp = new Outlook.Application();
// Get the NameSpace information.
Outlook.NameSpace oNS = oApp.GetNamespace("mapi");
// Get the default Contacts folder.
Outlook.MAPIFolder oContacts =
oNS.GetDefaultFolder(Outlook.OlDefaultFolders.olFo lderContacts);
// Get the Items collection from the folder.
Outlook.Items oItems = (Outlook.Items)oContacts.Items;
// Get the first contact item in the Items collection.
Outlook.ContactItem oCt =
(Outlook.ContactItem)oItems.Find(myQuery);

if (oCt != null)
{
if (oCt.Email1Address.IndexOf("@") != -1)
recipientEmailID = oCt.Email1Address;
else
recipientEmailID = recipientName;
}
else
{
recipientEmailID = recipientName;
}

oCt = null;
oItems = null;
oContacts = null;
oNS = null;
oApp = null;

return recipientEmailID;
}


and I am calling it only when


if (emailAddress.IndexOf("@") = 0)
{
emailAddress = GetEmailID(ref emailAddress);
}


2) I will definitely look at the resources that you have kindly shared and
try
NewMailEx.

3) There is one more problem which I am solving in a rather inelegant way.
I am getting the sender's Email ID from Outlook in a form like:

/O=DOMAIN/OU=FIRST ADMINISTRATIVE GROUP/CN=RE/ou=abcd

if the email ID is - .

We are using Active Directory Service and all that I am doing right now is
taking
out the email name and the domain by string manipulation and getting the
email ID from
the database against that. But I am looking for a more proper solution to
this problem.

Thanks.
Aninda



Ads