Arbeiten mit Aufgaben auf dem Exchange‑Server
Arbeiten mit Aufgaben
Aspose.Email unterstützt die Verarbeitung von Aufgaben auf Exchange mit dem ExchangeTask Klasse. Unterschiedliche Eigenschaften werden bereitgestellt von ExchangeTask, wie Subject, Status, Fälligkeitsdatum, und Priorität, kann verwendet werden, um die Aufgabe auf Exchange zu konfigurieren. Die EWSClient class stellt Funktionen bereit wie createTask, updateTask, und deleteTask die zur Verarbeitung von Aufgaben auf Exchange verwendet werden. Dieser Artikel zeigt, wie man:
- Eine neue Aufgabe erstellen.
- Die Zeitzone einer Aufgabe festlegen.
- Eine Aufgabe aktualisieren.
- Eine Aufgabe löschen.
- Aufgabenanforderung senden
- Aufgabe auf Disk speichern
Neue Aufgabe erstellen
Das folgende Code‑Snippet zeigt, wie Sie eine neue Aufgabe erstellen.
// 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.setSubject("New-Test");
task.setStatus(ExchangeTaskStatus.InProgress);
client.createTask(client.getMailboxInfo().getTasksUri(), task);
Zeitzone angeben
Die IEWSClient Schnittstelle und ExchangeTask Stellen Sie die Eigenschaft TimeZoneId bereit, um Zeitzoneninformationen beim Erstellen einer Aufgabe festzulegen. Das folgende Code‑Snippet zeigt, wie Sie die Zeitzone angeben.
client.setTimezoneId("Central Europe Standard Time");
Aufgabe aktualisieren
Die folgenden Code‑Snippets zeigen, wie Sie eine Aufgabe auf einem Exchange‑Server aktualisieren.
// 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.getMailboxInfo().getTasksUri());
// Parse all the tasks info in the list
for (ExchangeMessageInfo info : (Iterable<ExchangeMessageInfo>) 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
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss");
task.setDueDate(sdf.parse("26/02/2013 00:00:00"));
// Set task priority
task.setPriority(MailPriority.Low.getValue());
// Update task on exchange
client.updateTask(task);
}
Aufgabe löschen
Das folgende Code‑Snippet zeigt, wie Sie eine Aufgabe auf einem Exchange‑Server löschen.
// 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.getMailboxInfo().getTasksUri());
// Parse all the tasks info in the list
for (ExchangeMessageInfo info : (Iterable<ExchangeMessageInfo>) 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.deleteItem(task.getUniqueUri(), DeletionOptions.getDeletePermanently());
}
}
Aufgabenanforderung senden
Der Aspose.Email‑Exchange‑Dienst ermöglicht das Senden von Aufgabenanforderungen ähnlich wie Outlook. Das folgende Code‑Snippet zeigt, wie Sie eine Aufgabenanforderungsnachricht von der Disk laden und sie mit der IEWSClient.
// 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.setPreserveTnefAttachments(true);
// load task from .msg file
MailMessage eml = MailMessage.load(dataDir + "task.msg", options);
eml.setFrom(MailAddress.to_MailAddress("firstname.lastname@domain.com"));
eml.getTo().clear();
eml.getTo().addMailAddress(new MailAddress("firstname.lastname@domain.com"));
client.send(eml);
Aufgabe auf Disk speichern
Aspose.Email ermöglicht zudem das Speichern von Exchange‑Aufgaben auf Disk im Outlook‑MSG‑Format. Das folgende Code‑Snippet zeigt, wie Sie eine Aufgabe auf Disk speichern.
ExchangeTask task = new ExchangeTask();
task.setSubject("TASK-ID - " + UUID.randomUUID());
task.setStatus(ExchangeTaskStatus.InProgress);
Calendar cal = Calendar.getInstance();
task.setStartDate(cal.getTime());
cal.add(Calendar.DATE, 3);
task.setDueDate(cal.getTime());
task.save(dstEmail);
Auflisten von Aufgaben vom Exchange‑Server
IEWSClient stellt die listTasks Methode, die zum Abrufen von Aufgaben aus einem Exchange Web Service verwendet werden kann. Sie verfügt über mehrere Überladungen, um die Aufgabenliste aus einem bestimmten Ordner oder anhand von Suchkriterien zu erhalten. Das nachstehende Code‑Beispiel zeigt das Abrufen aller oder bestimmter Aufgaben aus dem Aufgabenordner.
IEWSClient client = EWSClient.getEWSClient(mailboxUri, credentials);
// Listing Tasks from Server
client.setTimezoneId("Central Europe Standard Time");
TaskCollection taskCollection = client.listTasks(client.getMailboxInfo().getTasksUri());
// print retrieved tasks' details
int iTasksCount = taskCollection.size();
for (int i = 0; i < iTasksCount; i++) {
ExchangeTask task = (ExchangeTask) taskCollection.get_Item(i);
System.out.println(task.getSubject());
System.out.println(task.getStartDate());
System.out.println(task.getDueDate());
}
// Listing Tasks from server based on Query - Completed and In-Progress
Integer[] selectedStatuses = new Integer[] { ExchangeTaskStatus.Completed, ExchangeTaskStatus.InProgress };
ExchangeQueryBuilder queryBuilder = new ExchangeQueryBuilder();
queryBuilder.getTaskStatus().in(Arrays.asList(selectedStatuses));
MailQuery query = queryBuilder.getQuery();
taskCollection = client.listTasks(client.getMailboxInfo().getTasksUri(), query);
// print retrieved tasks' details
iTasksCount = taskCollection.size();
for (int i = 0; i < iTasksCount; i++) {
ExchangeTask task = (ExchangeTask) taskCollection.get_Item(i);
System.out.println(task.getSubject());
System.out.println(task.getStartDate());
System.out.println(task.getDueDate());
}
Aufgaben vom Exchange‑Server filtern
Aspose.Email bietet die Möglichkeit, bestimmte Aufgaben vom Server abzurufen, anstatt alle Aufgaben zu holen. Die API kann verwendet werden, um Aufgaben nach deren Status wie Abgeschlossen, Aufgeschoben, In Bearbeitung, Nicht gestartet oder Wartend auf andere abzurufen. Die ExchangeQueryBuilder class kann verwendet werden, um das gewünschte Kriterium über die Eigenschaft Status festzulegen. Sie ermöglicht außerdem die Angabe mehrerer Bedingungen zum Abrufen gewünschter Aufgaben vom Exchange‑Server. Dies wird im folgenden Code‑Beispiel demonstriert.
// Create instance of ExchangeClient class by giving credentials
IEWSClient client = EWSClient.getEWSClient("https://outlook.office365.com/ews/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);
// list all those which are not in our specified statuses
queryBuilder = new ExchangeQueryBuilder();
queryBuilder.getTaskStatus().notIn(Arrays.asList(selectedStatuses));
query = queryBuilder.getQuery();
messageInfoCol = client.listMessages(client.getMailboxInfo().getTasksUri(), query);