Erstellen, Verwalten und Löschen von Exchange-Server-Aufgaben mit EWS

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

Aufgaben erstellen

Das folgende Codebeispiel 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.Subject = "New-Test";
task.Status = ExchangeTaskStatus.InProgress;
client.CreateTask(client.MailboxInfo.TasksUri, task);

Zeitzone angeben

Die IEWSClient Schnittstelle und ExchangeTask stellen Sie die TimeZoneId Eigenschaft zum Festlegen von Zeitzoneninformationen beim Erstellen einer Aufgabe. Das folgende Codebeispiel zeigt, wie Sie die Zeitzone angeben.

client.TimezoneId = "Central Europe Standard Time";

Aufgaben aktualisieren

Die folgenden Code‑Snippets zeigen, wie Sie eine Aufgabe auf einem Exchange‑Server aktualisieren.

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

Aufgaben 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.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);
    }
}

Aufgabenanfragen 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.

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

Aufgaben auf Datenträger 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.Subject = "TASK-ID - " + Guid.NewGuid();
task.Status = ExchangeTaskStatus.InProgress;
task.StartDate = DateTime.Now;
task.DueDate = task.StartDate.AddDays(3);
task.Save(dstEmail);

Aufgaben auflisten

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.

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

Aufgaben filtern

Aspose.Email bietet die Möglichkeit, spezifische Aufgaben vom Server abzurufen, anstatt alle Aufgaben vom Server zu erhalten. Die API kann verwendet werden, um Aufgaben nach Status wie Abgeschlossen, Aufgeschoben, In Bearbeitung, Nicht begonnen oder Auf andere wartend abzurufen. Der 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.