Работа с задачами на Exchange Server
Работа с задачами
Aspose.Email поддерживает обработку задач на Exchange с использованием класса ExchangeTask. Различные свойства, предоставляемые ExchangeTask, такие как Subject, Status, DueDate и Priority, могут использоваться для настройки задачи на Exchange. Класс EWSClient предоставляет функции, такие как CreateTask, UpdateTask и DeleteTask, которые используются для обработки задач на Exchange. В этой статье показано, как:
- Создать новую задачу.
- Установить временную зону задачи.
- Обновить задачу.
- Удалить задачу.
- Отправить запрос на задачу.
- Сохранить задачу на диск.
Создание новой задачи
Следующий кодовый фрагмент показывает, как создать новую задачу.
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-.NET | |
// Create instance of EWSClient class by giving credentials | |
IEWSClient client = EWSClient.GetEWSClient("https://outlook.office365.com/ews/exchange.asmx", "testUser", "pwd", "domain"); | |
// Create Exchange task object | |
ExchangeTask task = new ExchangeTask(); | |
// Set task subject and status to In progress | |
task.Subject = "New-Test"; | |
task.Status = ExchangeTaskStatus.InProgress; | |
client.CreateTask(client.MailboxInfo.TasksUri, task); |
Указание временной зоны
Интерфейс IEWSClient и ExchangeTask предоставляют свойство TimeZoneId для установки информации о временной зоне при создании задачи. Следующий кодовый фрагмент показывает, как указать временную зону.
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-.NET | |
client.TimezoneId = "Central Europe Standard Time"; |
Обновление задачи
Следующие кодовые фрагменты показывают, как обновить задачу на сервере Exchange.
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-.NET | |
// Create and initialize credentials | |
var credentials = new NetworkCredential("username", "12345"); | |
// Create instance of ExchangeClient class by giving credentials | |
IEWSClient client = EWSClient.GetEWSClient("https://outlook.office365.com/ews/exchange.asmx", "testUser", "pwd", "domain"); | |
// Get all tasks info collection from exchange | |
ExchangeMessageInfoCollection tasks = client.ListMessages(client.MailboxInfo.TasksUri); | |
// Parse all the tasks info in the list | |
foreach (ExchangeMessageInfo info in tasks) | |
{ | |
// Fetch task from exchange using current task info | |
ExchangeTask task = client.FetchTask(info.UniqueUri); | |
// Update the task status to NotStarted | |
task.Status = ExchangeTaskStatus.NotStarted; | |
// Set the task due date | |
task.DueDate = new DateTime(2013, 2, 26); | |
// Set task priority | |
task.Priority = MailPriority.Low; | |
// Update task on exchange | |
client.UpdateTask(task); | |
} |
Удаление задачи
Следующий кодовый фрагмент показывает, как удалить задачу на сервере Exchange.
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-.NET | |
// Create instance of ExchangeClient class by giving credentials | |
IEWSClient client = EWSClient.GetEWSClient("https://outlook.office365.com/ews/exchange.asmx", "testUser", "pwd", "domain"); | |
// Get all tasks info collection from exchange | |
ExchangeMessageInfoCollection tasks = client.ListMessages(client.MailboxInfo.TasksUri); | |
// Parse all the tasks info in the list | |
foreach (ExchangeMessageInfo info in tasks) | |
{ | |
// Fetch task from exchange using current task info | |
ExchangeTask task = client.FetchTask(info.UniqueUri); | |
// Check if the current task fulfills the search criteria | |
if (task.Subject.Equals("test")) | |
{ | |
//Delete task from exchange | |
client.DeleteItem(task.UniqueUri, DeletionOptions.DeletePermanently); | |
} | |
} |
Отправка запроса на задачу
Сервис Aspose.Email Exchange предоставляет возможность отправлять запросы на задачи, аналогично Outlook. Следующий кодовый фрагмент показывает, как загрузить сообщение запроса на задачу с диска и отправить его с использованием IEWSClient.
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-.NET | |
string dataDir = RunExamples.GetDataDir_Exchange(); | |
// Create instance of ExchangeClient class by giving credentials | |
IEWSClient client = EWSClient.GetEWSClient("https://outlook.office365.com/ews/exchange.asmx", "testUser", "pwd", "domain"); | |
MsgLoadOptions options = new MsgLoadOptions(); | |
options.PreserveTnefAttachments = true; | |
// load task from .msg file | |
MailMessage eml = MailMessage.Load(dataDir + "task.msg", options); | |
eml.From = "firstname.lastname@domain.com"; | |
eml.To.Clear(); | |
eml.To.Add(new MailAddress("firstname.lastname@domain.com")); | |
client.Send(eml); |
Сохранение задачи на диск
Aspose.Email также позволяет сохранять задачи Exchange на диск в формате Outlook MSG. Следующий кодовый фрагмент показывает, как сохранить задачу на диск.
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-.NET | |
ExchangeTask task = new ExchangeTask(); | |
task.Subject = "TASK-ID - " + Guid.NewGuid(); | |
task.Status = ExchangeTaskStatus.InProgress; | |
task.StartDate = DateTime.Now; | |
task.DueDate = task.StartDate.AddDays(3); | |
task.Save(dstEmail); |
Получение задач с сервера Exchange
IEWSClient предоставляет метод ListTasks, который можно использовать для получения задач из веб-сервиса Exchange. Он имеет несколько перегрузок, которые могут быть использованы для извлечения списка задач из конкретной папки или с использованием некоторых критериев поиска. Приведенный ниже кодовый пример иллюстрирует получение всех или конкретных задач из папки задач.
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-.NET | |
// Set mailboxURI, Username, password, domain information | |
string mailboxUri = "https://ex2010/ews/exchange.asmx"; | |
string username = "test.exchange"; | |
string password = "pwd"; | |
string domain = "ex2010.local"; | |
NetworkCredential credentials = new NetworkCredential(username, password, domain); | |
IEWSClient client = EWSClient.GetEWSClient(mailboxUri, credentials); | |
//Listing Tasks from Server | |
client.TimezoneId = "Central Europe Standard Time"; | |
TaskCollection taskCollection = client.ListTasks(client.MailboxInfo.TasksUri); | |
//print retrieved tasks' details | |
foreach (ExchangeTask task in taskCollection) | |
{ | |
Console.WriteLine(client.TimezoneId); | |
Console.WriteLine(task.Subject); | |
Console.WriteLine(task.StartDate); | |
Console.WriteLine(task.DueDate); | |
} | |
//Listing Tasks from server based on Query - Completed and In-Progress | |
ExchangeQueryBuilder builder = new ExchangeQueryBuilder(); | |
ExchangeTaskStatus[] selectedStatuses = new ExchangeTaskStatus[] | |
{ | |
ExchangeTaskStatus.Completed, | |
ExchangeTaskStatus.InProgress | |
}; | |
builder.TaskStatus.In(selectedStatuses); | |
MailQuery query = builder.GetQuery(); | |
taskCollection = client.ListTasks(client.MailboxInfo.TasksUri, query); | |
//print retrieved tasks' details | |
foreach (ExchangeTask task in taskCollection) | |
{ | |
Console.WriteLine(client.TimezoneId); | |
Console.WriteLine(task.Subject); | |
Console.WriteLine(task.StartDate); | |
Console.WriteLine(task.DueDate); | |
} |
Фильтрация задач с сервера Exchange
Aspose.Email предоставляет возможность извлекать конкретные задачи с сервера, а не извлекать все задачи с сервера. API может использоваться для извлечения задач по статусу задачи, таким как Завершено, Отложено, В процессе, Не начато или Ожидание от других. Класс ExchangeQueryBuilder может использоваться для указания желаемых критериев с использованием свойства Status. Он также позволяет указывать несколько условий для извлечения желаемых задач с сервера Exchange. Это демонстрируется следующим кодовым примером.