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