Vytvářet, spravovat a mazat úkoly Exchange Serveru pomocí EWS
Aspose.Email podporuje zpracování úkolů v Exchange pomocí ExchangeTask třída. Různé vlastnosti zpřístupněné ExchangeTask, například Subject, Stav, Datum splatnosti, a Priorita, může být použita k nastavení úkolu na Exchange. The EWSClient třída vystavuje funkce jako CreateTask, UpdateTask, a DeleteTask které jsou použity ke zpracování úkolů na Exchange. Tento článek ukazuje, jak:
- Vytvořit nový úkol.
- Nastavit časovou zónu úkolu.
- Aktualizovat úkol.
- Smazat úkol.
- Odeslat žádost o úkol
- Uložit úkol na disk
Vytvořit úkoly
Následující úryvek kódu ukazuje, jak vytvořit nový úkol.
// 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);
Zadat časovou zónu
The IEWSClient rozhraní a ExchangeTask poskytnout TimeZoneId vlastnost pro nastavení informací o časové zóně při vytváření úkolu. Následující úryvek kódu ukazuje, jak specifikovat časovou zónu.
client.TimezoneId = "Central Europe Standard Time";
Aktualizovat úkoly
Následující úryvky kódu ukazují, jak aktualizovat úkol na serveru Exchange.
// 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);
}
Smazat úkoly
Následující úryvek kódu vám ukazuje, jak smazat úkol na serveru Exchange.
// 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);
}
}
Odeslat žádosti o úkoly
Služba Aspose.Email Exchange poskytuje možnost odeslat žádosti o úkoly podobně jako Outlook. Následující úryvek kódu vám ukazuje, jak načíst zprávu žádosti o úkol z disku a odeslat ji pomocí IEWSClient.
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);
Uložit úkoly na disk
Aspose.Email také umožňuje ukládat úkoly Exchange na disk ve formátu Outlook MSG. Následující úryvek kódu vám ukazuje, jak uložit úkol na disk.
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);
Seznam úkolů
IEWSClient poskytuje ListTasks metoda, která může být použita k načtení úkolů z Exchange Web Service. Má několik přetížení, která lze použít k získání seznamu úkolů ze specifické složky nebo pomocí některých vyhledávacích kritérií. Níže uvedený ukázkový kód ilustruje získání všech nebo konkrétních úkolů ze složky Úkoly.
// 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);
}
Filtrovat úkoly
Aspose.Email poskytuje možnost získat konkrétní úkoly ze serveru místo načítání všech úkolů ze serveru. API lze použít k získání úkolů podle stavu úkolu, jako jsou Dokončeno, Odloženo, Ve vývoji, Nezahájeno nebo Čeká na ostatní. ExchangeQueryBuilder třída může být použita k upřesnění požadovaného kritéria pomocí vlastnosti Status. Také umožňuje zadat několik podmínek pro získání požadovaných úkolů ze serveru Exchange. To je demonstrováno následujícím ukázkovým kódem.