EWS ile Exchange Server Görevlerini Oluştur, Yönet ve Sil

Aspose.Email, Exchange üzerinde görev işleme desteği sağlar ExchangeTask sınıf. Farklı özellikler tarafından ortaya çıkarılan ExchangeTask, gibi Subject, Durum, Son Tarih, ve Öncelik, Exchange üzerinde görevi yapılandırmak için kullanılabilir. EWSClient sınıf, şunlar gibi işlevler ortaya koyar CreateTask, UpdateTask, ve DeleteTask Exchange üzerinde görevleri işlemek için kullanılanlar. Bu makale şunları gösterir:

  • Yeni bir görev oluştur.
  • Görevin saat dilimini ayarla.
  • Bir görevi güncelle.
  • Bir görevi sil.
  • Görev İsteği Gönder
  • Görevi Diske Kaydet

Görevler Oluştur

Aşağıdaki kod parçacığı yeni bir görev nasıl oluşturulur gösterir.

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

Saat Dilimini Belirt

Bu IEWSClient arayüz ve ExchangeTask sağlayın TimeZoneId Görev oluştururken saat dilimi bilgisi ayarlamak için özellik. Aşağıdaki kod parçacığı Saat Dilimini nasıl belirteceğinizi gösterir.

client.TimezoneId = "Central Europe Standard Time";

Görevleri Güncelle

Aşağıdaki kod parçacıkları, Exchange sunucusundaki bir görevi nasıl güncelleyeceğinizi gösterir.

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

Görevleri Sil

Aşağıdaki kod parçacığı, Exchange sunucusundaki bir görevi nasıl sileceğinizi gösterir.

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

Görev İstekleri Gönder

Aspose.Email Exchange servisi, Outlook’a benzer görev istekleri gönderebilme yeteneği sunar. Aşağıdaki kod parçacığı, bir görev isteği mesajını diskten yükleyip kullanarak nasıl göndereceğinizi gösterir. 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);

Görevleri Diske Kaydet

Aspose.Email, Exchange Görevlerini Outlook MSG formatında diske kaydetmeye de izin verir. Aşağıdaki kod parçacığı, bir görevi diske nasıl kaydedeceğinizi gösterir.

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

Görevleri Listele

IEWSClient sağlar ListTasks Exchange Web Service’den görevleri getirmek için kullanılabilecek metod. Belirli bir klasörden veya bazı arama kriterleriyle görev listesini almak için kullanılabilecek çeşitli aşırı yüklemelere sahiptir. Aşağıdaki kod örneği, Görevler klasöründen tüm ya da belirli görevleri almayı gösterir.

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

Görevleri Filtrele

Aspose.Email, sunucudan tüm görevleri almak yerine belirli görevleri alabilme yeteneği sağlar. API, Tamamlandı, Ertelenmiş, Devam Ediyor, Başlamamış veya Başkalarını Bekliyor gibi görev durumlarına göre görevleri almak için kullanılabilir. ExchangeQueryBuilder sınıf, Status özelliğini kullanarak istenen kriteri belirtmek için kullanılabilir. Ayrıca Exchange Server’dan istenen görevleri almak için birden çok koşul belirtmeye de izin verir. Bu, aşağıdaki kod örneğiyle gösterilmiştir.