package com.aspose.email.examples.exchangeews; import java.util.Arrays; import java.util.Calendar; import com.aspose.email.*; import com.aspose.email.examples.Utils; public class Tasks { // The path to the resource directory. public static final String dataDir = Utils.getSharedDataDir(Tasks.class) + "exchange/"; public static void main(String[] args) { // Create New Task on Exchange createNewTaskOnExchange(); // Specifying Timezone for Exchange Task specifyTimezoneForExchangeTask(); // Update Task on Exchange updateTaskOnExchange(); // Delete Task on Exchange deleteTaskOnExchange(); // Sending Task Request sendTaskRequest(); // Saving Exchange Task to Disc saveExchangeTaskToDisc(); //Filter Tasks from Exchange Server filterTasksFromExchangeServer(); } public static void createNewTaskOnExchange() { // Create instance of EWSClient class by giving credentials IEWSClient client = EWSClient.getEWSClient("https://outlook.office365.com/exchangeews/exchange.asmx", "testUser", "pwd", "domain"); // Create Exchange task object ExchangeTask task = new ExchangeTask(); // Set task subject task.setSubject("Task 1 from Java"); // Set task status to In progress task.setStatus(ExchangeTaskStatus.InProgress); // Create task on exchange client.createTask(client.getMailboxInfo().getTasksUri(), task); } public static void specifyTimezoneForExchangeTask() { // Create instance of EWSClient class by giving credentials IEWSClient client = EWSClient.getEWSClient("https://outlook.office365.com/exchangeews/exchange.asmx", "testUser", "pwd", "domain"); client.setTimezoneId("Central Europe Standard Time"); } public static void updateTaskOnExchange() { // Create instance of EWSClient class by giving credentials IEWSClient client = EWSClient.getEWSClient("https://outlook.office365.com/exchangeews/exchange.asmx", "testUser", "pwd", "domain"); // Get all tasks info collection from exchange ExchangeMessageInfoCollection tasks = client.listMessages(client.getMailboxInfo().getTasksUri()); // Parse all the tasks info in the list for (ExchangeMessageInfo info : tasks) { // Fetch task from exchange using current task info ExchangeTask task = client.fetchTask(info.getUniqueUri()); // Update the task status to NotStarted task.setStatus(ExchangeTaskStatus.NotStarted); // Set the task due date Calendar cal = Calendar.getInstance(); cal.set(2015, 6, 18, 20, 40); task.setDueDate(cal.getTime()); // Update task on exchange client.updateTask(task); } } public static void deleteTaskOnExchange() { // Create instance of ExchangeClient class by giving credentials IEWSClient client = EWSClient.getEWSClient("https://outlook.office365.com/exchangeews/exchange.asmx", "testUser", "pwd", "domain"); // Get all tasks info collection from exchange ExchangeMessageInfoCollection tasks = client.listMessages(client.getMailboxInfo().getTasksUri()); // Parse all the tasks info in the list for (ExchangeMessageInfo info : tasks) { // Fetch task from exchange using current task info ExchangeTask task = client.fetchTask(info.getUniqueUri()); // Check if the current task fulfills the search criteria if (task.getSubject().equals("test")) { //Delete task from exchange client.deleteTask(task.getUniqueUri(), DeleteTaskOptions.DeletePermanently); } } } public static void sendTaskRequest() { // Create instance of ExchangeClient class by giving credentials IEWSClient client = EWSClient.getEWSClient("https://outlook.office365.com/exchangeews/exchange.asmx", "testUser", "pwd", "domain"); MsgLoadOptions msgLoadOptions = new MsgLoadOptions(); msgLoadOptions.setPreserveTnefAttachments(true); // load task from .msg file MailMessage eml = MailMessage.load(dataDir + "task.msg", msgLoadOptions); eml.setFrom(new MailAddress("firstname.lastname@domain.com")); eml.getTo().clear(); eml.getTo().addItem(new MailAddress("firstname.lastname@domain.com")); client.send(eml); } public static void saveExchangeTaskToDisc() { ExchangeTask task = new ExchangeTask(); task.setSubject("EMAILNET-34759"); task.setStatus(ExchangeTaskStatus.InProgress); task.save(dataDir + "task_out.msg"); } public static void filterTasksFromExchangeServer(){ ExchangeQueryBuilder queryBuilder = null; MailQuery query = null; ExchangeTask fetchedTask = null; ExchangeMessageInfoCollection messageInfoCol = null; // Create instance of ExchangeClient class by giving credentials IEWSClient client = EWSClient.getEWSClient("https://outlook.office365.com/exchangeews/exchange.asmx", "testUser", "pwd", "domain"); //Set timezone for tasks client.setTimezoneId("Central Europe Standard Time"); //We use these status values for specifying in queries Integer[] values = new Integer[] {ExchangeTaskStatus.Completed, ExchangeTaskStatus.Deferred, ExchangeTaskStatus.InProgress, ExchangeTaskStatus.NotStarted, ExchangeTaskStatus.WaitingOnOthers}; messageInfoCol = client.listMessages(client.getMailboxInfo().getTasksUri()); //Now retrieve the tasks with specific statuses for (int status : values) { queryBuilder = new ExchangeQueryBuilder(); queryBuilder.getTaskStatus().equals(status); query = queryBuilder.getQuery(); messageInfoCol = client.listMessages(client.getMailboxInfo().getTasksUri(), query); fetchedTask = client.fetchTask(messageInfoCol.get_Item(0).getUniqueUri()); } //retrieve all other than specified for (int status : values) { queryBuilder = new ExchangeQueryBuilder(); queryBuilder.getTaskStatus().notEquals((int)status); query = queryBuilder.getQuery(); messageInfoCol = client.listMessages(client.getMailboxInfo().getTasksUri(), query); } //specifying multiple criterion Integer[] selectedStatuses = new Integer[] { ExchangeTaskStatus.Completed, ExchangeTaskStatus.InProgress }; queryBuilder = new ExchangeQueryBuilder(); queryBuilder.getTaskStatus().in(Arrays.asList(selectedStatuses)); query = queryBuilder.getQuery(); messageInfoCol = client.listMessages(client.getMailboxInfo().getTasksUri(), query); queryBuilder = new ExchangeQueryBuilder(); queryBuilder.getTaskStatus().notIn(Arrays.asList(selectedStatuses)); query = queryBuilder.getQuery(); messageInfoCol = client.listMessages(client.getMailboxInfo().getTasksUri(), query); } }