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.