2015-06-08 91 views
0

我正在寻找一种以编程方式(.Net)访问Exchange 2003服务器上的PRIVATE联系人文件夹的方法,以创建一个子文件夹,以便从数据库创建联系人。如何以编程方式访问Exchange 2003专用(联系人)项目

我迄今发现的解决方案依赖于EWS,例如, https://social.msdn.microsoft.com/Forums/en-US/aec6c998-f304-439c-9fa7-27bb9a4c4b45/problem-accessing-folders-in-another-mailbox?forum=exchangesvrdevelopment - 此类示例适用于2007+,我必须针对的Exchange服务器是2003.

其他示例是Outlook Addins。

我需要一个独立的解决方案(一个可执行文件),每次运行它时,它都会从DB创建联系人到用户的“联系人”文件夹下的特定子文件夹中。

我也搜索了一些没有太多运气的MAPI代码示例(.Net)。

您能否提供说明如何访问私人邮箱联系人文件夹(或子文件夹)以在其中写入新联系人项目的代码(VB.NET或C#)?

+0

完全独立会产生问题,但请看看使用Outlook的CDO/RDO机制的Redemption Data Objects。它确实需要安装Outlook,但不需要运行它(它使用库,它不会自动运行它)。我们最近开始使用它,性能比EWS好得多。 http://www.dimastr.com/redemption/rdo_introduction.htm即使您不使用它,也可以获取OutlookSpy的(免费)副本,它将公​​开大量有关Exchange如何在内部工作的信息(向工具栏添加工具栏展望) – Basic

+0

我编辑了你的标题。请参阅:“[应该在其标题中包含”标签“](http://meta.stackexchange.com/questions/19190/)”,其中的共识是“不,他们不应该”。 –

+0

@John Saunders:感谢您为遵守法规而作出的努力。在我的特殊情况下,我觉得从标题中删除的“.Net”对于强调我不需要接收C++/java等解决方案是必不可少的,但只需要.Net。我想有些人可能会认为这是明显的,因为“.net”标签。标签是否具有“仅”XOR“很高兴”的含义......除非另有明确解释? – Miha

回答

0

[从评论推荐]

完全独立将是有问题的,但看看Redemption Data Objects暴露的CDO/RDO由outlook使用的机制。它确实需要安装Outlook,但不需要运行它(它使用库,但无法通过自动化Outlook工作)。

我们最近开始使用RDO,性能比EWS好得多。

即使您不使用它,也可以获取同一家公司的(免费)OutlookSpy副本。它将公开许多有关Exchange如何在内部工作的信息,尤其是数据结构正在使用的信息(它向Outlook添加了一个工具栏,它并不孤立)。

+0

我想将其标记为“答案”。怎么样? – Miha

+0

左侧的帖子得分应该有一个勾号。点击它接受。请参阅[接受答案:它是如何工作的](http://meta.stackexchange.com/a/5235/135956)和[“声誉”如何工作?](http://meta.stackexchange.com/q/7237/135956)的一些网站基础知识 – Basic

0

如果您尝试使用.Net,那么您可能需要使用Outlook对象,如在MSDN上描述in the conclusion to the Using MAPI to Create Outlook 2007 Items文章所述。 CDO和RDO旨在用于VBscript和其他非托管代码。

使用此方法,您正在使用C#来利用给定邮箱中的Outlook 2007(或更好)自动化。是的,它需要一个对目标邮箱具有适当访问权限的帐户,并且您必须迭代邮箱并自行浏览文件夹树。

他们给出的例子是这样的:

private void AddContact() 
{ 
    try 
    { 
     Outlook.ContactItem oContact = 
      Application.CreateItem(
      Outlook.OlItemType.olContactItem) 
      as Outlook.ContactItem; 
     oContact.FirstName = "Jacqueline"; 
     oContact.LastName = "Haddad"; 
     oContact.Initials = "J.H."; 
     oContact.CompanyName = "Microsoft"; 
     oContact.Email1Address = "[email protected]"; 
     oContact.Email1AddressType = "SMTP"; 
     oContact.Email1DisplayName = 
      "Jacqueline Haddad ([email protected])"; 
     oContact.BusinessAddressStreet = "1 Microsoft Way"; 
     oContact.BusinessAddressCity = "Redmond"; 
     oContact.BusinessAddressState = "WA"; 
     oContact.BusinessAddressPostalCode = "95802"; 
     oContact.BusinessAddressCountry = "USA"; 
     oContact.BusinessTelephoneNumber = "800-555-1212"; 
     oContact.WebPage = "http://www.codeplex.com/mfcmapi"; 
     oContact.Body = "This is a sample note."; 
     oContact.Save(); 
    } 
    catch (Exception ex) 
    { 
     Debug.WriteLine(ex.Message); 
    } 
} 
+0

另一个含义是,您需要安装Outlook并在您运行此工具的计算机上配置适当的配置文件。 – DevinGanger

相关问题