Не так давно на работе была поставлена задача сделать автоматическую выгрузку задач из основной HRM-системы задач в Outlook пользователей.
Exchange Web Services Managed API позволяет наиболее просто работать с Exchange Server.
Далее основные моменты работы с EWS с примерами на C#.
Был создан специальный пользователь, которому были установлены необходимые разрешения на папки «Задачи» остальных пользователей.
Сначала необходимо создать экземпляр класса ExchangeService (пример для версии 2007) и аутентифицироваться под нужным пользователем:
Exchange Web Services Managed API позволяет наиболее просто работать с Exchange Server.
Далее основные моменты работы с EWS с примерами на C#.
Был создан специальный пользователь, которому были установлены необходимые разрешения на папки «Задачи» остальных пользователей.
Сначала необходимо создать экземпляр класса ExchangeService (пример для версии 2007) и аутентифицироваться под нужным пользователем:
- ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2007_SP1);
- service.Credentials = new WebCredentials("user", "pass", "domain");
* This source code was highlighted with Source Code Highlighter.
Далее необходимо указать url для работы с сервером вручную:
- service.Url = new Uri("https://server.ru/EWS/Exchange.asmx");
* This source code was highlighted with Source Code Highlighter.
или автоматически по e-mail:
- service.AutodiscoverUrl("user@server.ru");
* This source code was highlighted with Source Code Highlighter.
Далее можно создать задачу другому пользователю:
- Task task = new Task(service);
-
- //Дата начала
- task.StartDate = new DateTime(2010, 3, 15, 0, 0, 0);
- //Срок
- task.DueDate = new DateTime(2010, 3, 17, 0, 0, 0);
- //Тема
- task.Subject = "Купить слона";
- //Назначить категорию
- task.Categories.Add("Срочное");
-
- //Найти папку Задачи пользователя user2@sever.ru
- Folder tasksFolder = Folder.Bind(service, new FolderId(WellKnownFolderName.Tasks, "user2@sever.ru"));
-
- //Сохранить задачу
- task.Save(tasksFolder.Id);
* This source code was highlighted with Source Code Highlighter.
Найти уже существующую задачу:
- List<SearchFilter> searchFilterCollection = new List<SearchFilter>();
- //По теме
- searchFilterCollection.Add(new SearchFilter.ContainsSubstring(ItemSchema.Subject, "Купить слона"));
- SearchFilter searchFilter = new SearchFilter.SearchFilterCollection(LogicalOperator.Or, searchFilterCollection.ToArray());
-
-
- ItemView view = new ItemView(50);
-
- view.PropertySet = new PropertySet(BasePropertySet.IdOnly, ItemSchema.Subject, ItemSchema.DateTimeReceived);
- view.OrderBy.Add(ItemSchema.DateTimeReceived, SortDirection.Descending);
- view.Traversal = ItemTraversal.Shallow;
-
- //Искать задачи в папке Задачи пользователя user2@server.ru
- Folder tasksFolder = Folder.Bind(service, new FolderId(WellKnownFolderName.Tasks, "user2@server.ru" ));
-
- FindItemsResults<Item> findResults = service.FindItems(tasksFolder.Id, searchFilter, view);
-
- //Пройтись по всем найденным элементам
- foreach (Item myItem in findResults.Items)
- {
- if (myItem is Task)
- {
- //Что-нибудь делаем с myItem.Id
- }
- }
* This source code was highlighted with Source Code Highlighter.
Удалить найденную задачу:
- Task task = Task.Bind(service, myItem.Id);
- task.Delete(DeleteMode.HardDelete);
* This source code was highlighted with Source Code Highlighter.
Обновить найденную задачу:
- Task task = Task.Bind(service, myItem.Id);
-
- task.StartDate = new DateTime(2010, 7, 1, 0, 0, 0);
- task.DueDate = new DateTime(2010, 7, 15, 0, 0, 0);
- task.Subject = "Продать слона";
- task.Categories.Clear();
- task.Categories.Add("Не срочно");
-
- task.Update(ConflictResolutionMode.AlwaysOverwrite);
* This source code was highlighted with Source Code Highlighter.
Ссылки по теме:
Exchange Web Services Managed API 1.0 SDK:
msdn.microsoft.com/en-us/library/dd633710%28v=EXCHG.80%29.aspx
Скачать Exchange Web Services Managed API:
www.microsoft.com/downloads/details.aspx?FamilyID=C3342FB3-FBCC-4127-BECF-872C746840E1&displaylang=en&displaylang=en