如何以编程方式访问Exchange 2003专用(联系)项目

时间:2015-06-08 19:51:07

标签: .net exchange-server-2003

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

我到目前为止找到的解决方案依赖于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。

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

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

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

2 个答案:

答案 0 :(得分:0)

如果您尝试从.Net执行此操作,那么您可能需要使用MSDN上描述的in the conclusion to the Using MAPI to Create Outlook 2007 Items文章中的Outlook对象。 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 = "someone@example.com";
        oContact.Email1AddressType = "SMTP";
        oContact.Email1DisplayName =
            "Jacqueline Haddad (someone@example.com)";
        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);
    }
}

答案 1 :(得分:0)

[通过评论推广]

完全独立会有问题,但请查看Redemption Data Objects,它揭示了outlook使用的CDO / RDO机制。它确实需要安装Outlook,但不要求它运行(它使用库,但不能通过自动化Outlook工作)。

我们最近开始使用RDO并且获得了比EWS更好的性能。

即使您不使用它,也请抓住同一家公司的OutlookSpy(免费)副本。它将公开很多关于Exchange如何在内部工作的信息,尤其是数据结构的使用(它为Outlook添加了一个工具栏,它并不孤立)。