2015-06-08 7 views
0

Я ищу способ программно (.Net) получить доступ к папкам контактов PRIVATE на сервере Exchange 2003, чтобы создать подпапку, в которой можно создавать контакты из базы данных.Как получить доступ к элементам электронной почты Exchange 2003 (Contact)

Решения, которые я нашел до сих пор, полагаются на 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 год.

Другие примеры - это Addins.

Мне нужно автономное решение (исполняемый файл), который каждый раз, когда он запускается, создает контакты из БД в конкретную подпапку в папке «Контакты» пользователя.

Я также искал некоторые образцы кода MAPI (.Net) без большой удачи.

Не могли бы вы предоставить код (либо VB.NET, либо C#), иллюстрирующий, как получить доступ к папке «Контакты» (или вложенной папке) частного почтового ящика, чтобы написать там новый контактный элемент?

+0

Полностью автономный будет проблематичным, но взгляните на объекты данных о выделении, которые раскрывают механизм CDO/RDO, используемый внешним прогнозом. Это требует, чтобы Outlook был установлен, но не требует его запуска (он использует библиотеки, он не автоматизирует его). Мы недавно начали использовать его и получаем гораздо лучшую производительность, чем EWS. http://www.dimastr.com/redemption/rdo_introduction.htm Даже если вы этого не сделаете, возьмите (бесплатную) копию OutlookSpy, вы увидите много информации о том, как Exchange работает внутри страны (добавляет панель инструментов к outlook) – Basic

+0

Я отредактировал ваш заголовок. Пожалуйста, смотрите: «Если вопросы включают« теги »в их названиях?] (Http://meta.stackexchange.com/questions/19190/), где консенсус« нет, они не должны ». –

+0

@ Джон Сандерс: Спасибо за ваши усилия по обеспечению соблюдения. В моем конкретном случае я чувствовал, что удаленная «.Net» из названия имеет важное значение для того, чтобы подчеркнуть, что мне не нужно получать решения C++/java и т. Д., Но только .Net. Я думаю, некоторые люди могут считать это очевидным из-за тега «.net». Есть ли у тега значение «только» XOR «приятно иметь» ... если явно не объяснено иное? – Miha

ответ

0

[Назначен из комментария]

Полностью автономные будет проблематично, но взглянуть на Redemption Data Objects, которое обнажает CDO/RDO механизм, используемый прогнозом. Это требует, чтобы 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, как описано в статье in the conclusion to the Using MAPI to Create Outlook 2007 Items на MSDN. 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