]]>
]]>Не так давно на работе была поставлена задача сделать автоматическую выгрузку задач из основной HRM-системы задач в Outlook пользователей.

Exchange Web Services Managed API позволяет наиболее просто работать с Exchange Server.

Был создан специальный пользователь, которому были установлены необходимые разрешения на папки «Задачи» остальных пользователей, и от имени которого создавались задачи другим пользователям.

Сначала необходимо создать экземпляр класса ExchangeService (пример для версии 2007) и аутентифицироваться под нужным пользователем:
  1. ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2007_SP1);
  2. service.Credentials = new WebCredentials("user", "pass", "domain");


Далее необходимо указать url для работы с сервером вручную:
  1. service.Url = new Uri("https://server.ru/EWS/Exchange.asmx");


или автоматически по e-mail:
  1. service.AutodiscoverUrl("user@server.ru");


Далее можно создать задачу другому пользователю:
  1. Task task = new Task(service);
  2.  
  3. //Дата начала
  4. task.StartDate = new DateTime(2010, 3, 15, 0, 0, 0);
  5. //Срок
  6. task.DueDate = new DateTime(2010, 3, 17, 0, 0, 0);
  7. //Тема   
  8. task.Subject = "Купить слона";
  9. //Назначить категорию
  10. task.Categories.Add("Срочное");
  11.  
  12. //Найти папку Задачи пользователя user2@sever.ru
  13. Folder tasksFolder = Folder.Bind(service, new FolderId(WellKnownFolderName.Tasks, "user2@sever.ru"));
  14.  
  15. //Сохранить задачу
  16. task.Save(tasksFolder.Id);


Найти уже существующую задачу:
  1. List<SearchFilter> searchFilterCollection = new List<SearchFilter>();
  2. //По теме
  3. searchFilterCollection.Add(new SearchFilter.ContainsSubstring(ItemSchema.Subject, "Купить слона"));
  4. SearchFilter searchFilter = new SearchFilter.SearchFilterCollection(LogicalOperator.Or, searchFilterCollection.ToArray());
  5.  
  6.  
  7. ItemView view = new ItemView(50);
  8.  
  9. view.PropertySet = new PropertySet(BasePropertySet.IdOnly, ItemSchema.Subject, ItemSchema.DateTimeReceived);
  10. view.OrderBy.Add(ItemSchema.DateTimeReceived, SortDirection.Descending);
  11. view.Traversal = ItemTraversal.Shallow;
  12.  
  13. //Искать задачи в папке Задачи пользователя user2@server.ru
  14. Folder tasksFolder = Folder.Bind(service, new FolderId(WellKnownFolderName.Tasks, "user2@server.ru" ));
  15.  
  16. FindItemsResults<Item> findResults = service.FindItems(tasksFolder.Id, searchFilter, view);
  17.  
  18. //Пройтись по всем найденным элементам
  19. foreach (Item myItem in findResults.Items)
  20. {
  21.   if (myItem is Task)
  22.   {
  23.     //Что-нибудь делаем с myItem.Id
  24.   }
  25. }


Удалить найденную задачу:
  1. Task task = Task.Bind(service, myItem.Id);
  2. task.Delete(DeleteMode.HardDelete);


Обновить найденную задачу:
  1. Task task = Task.Bind(service, myItem.Id);
  2.  
  3. task.StartDate = new DateTime(2010, 7, 1, 0, 0, 0);
  4. task.DueDate = new DateTime(2010, 7, 15, 0, 0, 0);
  5. task.Subject = "Продать слона";
  6. task.Categories.Clear();
  7. task.Categories.Add("Не срочно");
  8.  
  9. task.Update(ConflictResolutionMode.AlwaysOverwrite);


Ссылки по теме:
Exchange Web Services Managed API 1.0 SDK
Скачать Exchange Web Services Managed API

Оставьте комментарий!

Не регистрировать/аноним

Используйте нормальные имена. Ваш комментарий будет опубликован после проверки.

Если вы уже зарегистрированы как комментатор или хотите зарегистрироваться, укажите пароль и свой действующий email.
(При регистрации на указанный адрес придет письмо с кодом активации и ссылкой на ваш персональный аккаунт, где вы сможете изменить свои данные, включая адрес сайта, ник, описание, контакты и т.д.)



Выберите человечка с поднятой рукой!

При нажатии на картинку, Ваш комментарий будет добавлен.