Créer, gérer et supprimer des tâches du serveur Exchange avec EWS

Aspose.Email prend en charge le traitement des tâches sur Exchange à l’aide du ExchangeTask classe. Différentes propriétés exposées par ExchangeTask, comme Subject, Statut, Date d’échéance, et Priorité, peut être utilisée pour configurer la tâche sur Exchange. Le EWSClient la classe expose des fonctions telles que CreateTask, UpdateTask, et DeleteTask qui sont utilisées pour traiter les tâches sur Exchange. Cet article montre comment :

  • Créer une nouvelle tâche.
  • Définir le fuseau horaire d’une tâche.
  • Mettre à jour une tâche.
  • Supprimer une tâche.
  • Envoyer la demande de tâche
  • Enregistrer la tâche sur le disque

Créer des tâches

Le fragment de code suivant montre comment créer une nouvelle tâche.

// 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);

Spécifier le fuseau horaire

Le IEWSClient interface et ExchangeTask fournir le TimeZoneId propriété permettant de définir les informations de fuseau horaire lors de la création d’une tâche. Le fragment de code suivant montre comment spécifier le fuseau horaire.

client.TimezoneId = "Central Europe Standard Time";

Mettre à jour les tâches

Les fragments de code suivants montrent comment mettre à jour une tâche sur un serveur 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);
}

Supprimer les tâches

Le fragment de code suivant vous montre comment supprimer une tâche sur un serveur 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);
    }
}

Envoyer des demandes de tâche

Le service Aspose.Email Exchange offre la capacité d’envoyer des demandes de tâches similaires à Outlook. Le fragment de code suivant vous montre comment charger un message de demande de tâche depuis le disque et l’envoyer en utilisant le 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);

Enregistrer les tâches sur le disque

Aspose.Email permet également d’enregistrer les tâches Exchange sur disque au format Outlook MSG. Le fragment de code suivant vous montre comment enregistrer une tâche sur le disque.

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);

Lister les tâches

IEWSClient fournit le ListTasks méthode pouvant être utilisée pour extraire les tâches d’un Exchange Web Service. Elle possède plusieurs surcharges permettant de récupérer la liste des tâches d’un dossier spécifique ou en utilisant certains critères de recherche. L’exemple de code ci‑dessus illustre l’obtention de toutes les tâches ou de tâches spécifiques du dossier 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);
}

Filtrer les tâches

Aspose.Email offre la possibilité de récupérer des tâches spécifiques du serveur au lieu de récupérer toutes les tâches du serveur. L’API peut être utilisée pour récupérer les tâches par état de tâche tel que Terminé, Différé, En cours, Non commencé ou En attente d’autres. Le ExchangeQueryBuilder la classe peut être utilisée pour spécifier le critère souhaité en utilisant la propriété Status. Elle permet également de spécifier plusieurs conditions pour récupérer les tâches souhaitées du serveur Exchange. Ceci est illustré par l’exemple de code suivant.