Tworzenie, zarządzanie i usuwanie zadań serwera Exchange przy użyciu EWS
Aspose.Email obsługuje przetwarzanie zadań na Exchange przy użyciu ExchangeTask klasa. Różne właściwości udostępniane przez ExchangeTask, jak Subject, Status, Data terminu, oraz Priorytet, może być użyta do skonfigurowania zadania na Exchange. The EWSClient klasa udostępnia funkcje takie jak CreateTask, UpdateTask, oraz DeleteTask które są używane do przetwarzania zadań na Exchange. Ten artykuł pokazuje, jak:
- Utwórz nowe zadanie.
- Ustaw strefę czasową zadania.
- Zaktualizuj zadanie.
- Usuń zadanie.
- Wyślij żądanie zadania
- Zapisz zadanie na dysku
Utwórz zadania
Poniższy fragment kodu pokazuje, jak utworzyć nowe zadanie.
// 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);
Określ strefę czasową
Ten IEWSClient interfejs i ExchangeTask dostarcz TimeZoneId właściwość służąca do ustawiania informacji o strefie czasowej przy tworzeniu zadania. Poniższy fragment kodu pokazuje, jak określić strefę czasową.
client.TimezoneId = "Central Europe Standard Time";
Aktualizuj zadania
Poniższe fragmenty kodu pokazują, jak zaktualizować zadanie na serwerze 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);
}
Usuń zadania
Poniższy fragment kodu pokazuje, jak usunąć zadanie na serwerze 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);
}
}
Wyślij żądania zadań
Usługa Aspose.Email Exchange umożliwia wysyłanie żądań zadań podobnie jak Outlook. Poniższy fragment kodu pokazuje, jak wczytać wiadomość żądania zadania z dysku i wysłać ją przy użyciu 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);
Zapisz zadania na dysku
Aspose.Email umożliwia również zapisywanie zadań Exchange na dysku w formacie Outlook MSG. Poniższy fragment kodu pokazuje, jak zapisać zadanie na dysku.
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);
Lista zadań
IEWSClient udostępnia ListTasks metoda, którą można użyć do pobierania zadań z usługi Exchange Web Service. Ma kilka przeciążeń, które umożliwiają pobranie listy zadań z określonego folderu lub przy użyciu określonych kryteriów wyszukiwania. Poniższy przykład kodu ilustruje pobieranie wszystkich lub wybranych zadań z folderu Tasks.
// 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);
}
Filtrowanie zadań
Aspose.Email zapewnia możliwość pobierania konkretnych zadań z serwera zamiast pobierania wszystkich zadań z serwera. API może być użyte do pobierania zadań według ich statusu, takiego jak Zakończone, Odroczone, W trakcie, Nie rozpoczęte lub Oczekujące na innych. Ten ExchangeQueryBuilder klasa może być użyta do określenia pożądanego kryterium przy użyciu właściwości Status. Umożliwia także określenie wielu warunków do pobierania wybranych zadań z serwera Exchange. Zostało to przedstawione w poniższym przykładzie kodu.