Outlook在Internet1address和IMAddress之间的互操作差异

时间:2014-08-21 12:55:29

标签: c# outlook office-interop

我目前正在使用互操作来从Outlook中获取所有本地联系人。当我第一次编程程序时,我使用了以下代码:

                Microsoft.Office.Interop.Outlook.Application outlookHandler = new Microsoft.Office.Interop.Outlook.Application();
                Microsoft.Office.Interop.Outlook.Items outlookItemsCollection;
                MAPIFolder folderContacts = (MAPIFolder)outlookHandler.Session.GetDefaultFolder(OlDefaultFolders.olFolderContacts);
                outlookItemsCollection = folderContacts.Items;

                foreach (var outlookItem in outlookItemsCollection)
                {
                   ContactItem contactItem = outlookItem as ContactItem;
                   //...do something 
                }

获取所有联系人。现在我在使用emaail1Address的emailaddress时遇到了一些麻烦。我从那里得到了一些与我正在寻找的邮件地址无关的奇怪符号:" /o=Companyname/ou=City/cn=Department/cn=x.xyz" ;最后一部分是邮件地址的第一部分。但是当我然后使用contactItem.IMAddress时,我得到的邮件地址就像我最初预期的Email1Address一样。

所以我的问题是:为什么会有这种差异,应该使用IMAddress代替Email1Address还是我在这里忽略了什么?

1 个答案:

答案 0 :(得分:0)

这两个地址完全不相关。您拥有的Email1Address是一个完全有效的EX类型地址(而不是SMTP)。

当GAL条目作为联系人添加时,Email1AddressType将为“EX”。 SMTP地址将存储在名为MAPI的属性中,其DASL名称为http://schemas.microsoft.com/mapi/id/{00062004-0000-0000-C000-000000000046}/8084001F。您可以使用ContactItem.PropertyAccessor.GetPorperty访问它。

查看与OutlookSpy的联系人(选择联系人并单击“IMessage”按钮)。