Skapa, hantera och radera Exchange Server-uppgifter med EWS

Aspose.Email stöder bearbetning av uppgifter på Exchange med hjälp av ExchangeTask klass. Olika egenskaper exponeras av ExchangeTask, som Ämne, Status, Förfallodatum, och Prioritet, kan användas för att konfigurera uppgiften på Exchange. Den EWSClient klassen exponerar funktioner som CreateTask, UpdateTask, och DeleteTask som används för att bearbeta uppgifter på Exchange. Denna artikel visar hur man:

  • Skapa en ny uppgift.
  • Ange en uppgifts tidszon.
  • Uppdatera en uppgift.
  • Ta bort en uppgift.
  • Skicka uppgiftsförfrågan
  • Spara uppgift till disk

Skapa uppgifter

Följande kodsnutt visar hur du skapar en ny uppgift.

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

Ange tidszon

Den IEWSClient gränssnitt och ExchangeTask tillhandahålla TimeZoneId egenskap för att ange tidszonsinformation när en uppgift skapas. Följande kodsnutt visar hur du specificerar tidszon.

client.TimezoneId = "Central Europe Standard Time";

Uppdatera uppgifter

Följande kodavsnitt visar hur du uppdaterar en uppgift på en Exchange‑server.

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

Radera uppgifter

Följande kodavsnitt visar hur du tar bort en uppgift på en Exchange‑server.

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

Skicka uppgiftsförfrågningar

Aspose.Email Exchange‑tjänsten ger möjlighet att skicka uppgiftsförfrågningar på liknande sätt som Outlook. Följande kodavsnitt visar hur du laddar ett uppgiftsförfrågningsmeddelande från disk och skickar det med hjälp av 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);

Spara uppgifter på disk

Aspose.Email möjliggör också att spara Exchange‑uppgifter till disk i Outlook MSG-format. Följande kodavsnitt visar hur du sparar en uppgift till disk.

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

Lista uppgifter

IEWSClient tillhandahåller ListTasks metod som kan användas för att hämta uppgifter från en Exchange Web Service. Den har flera överlagringar som kan användas för att hämta listan över uppgifter från en specifik mapp eller med vissa sökkriterier. Nedanstående kodexempel visar hur man får alla eller specifika uppgifter från Uppgifts‑mappen.

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

Filtrera uppgifter

Aspose.Email erbjuder möjligheten att hämta specifika uppgifter från servern istället för att hämta alla uppgifter från servern. API:et kan användas för att hämta uppgifter efter uppgiftsstatus som Slutförd, Uppskjuten, Pågående, Ej påbörjad eller Väntar på andra. ExchangeQueryBuilder klassen kan användas för att ange önskat kriterium med hjälp av Status‑egenskapen. Den tillåter även att specificera flera villkor för att hämta önskade uppgifter från Exchange‑servern. Detta demonstreras i följande kodexempel.