Exchange Server'da Görevlerle Çalışma

Görevlerle Çalışma

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

Yeni Görev Oluştur

Aşağıdaki kod parçacığı, yeni bir görev oluşturmayı nasıl kullanacağınızı 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.setSubject("New-Test");
task.setStatus(ExchangeTaskStatus.InProgress);
client.createTask(client.getMailboxInfo().getTasksUri(), task);

Saat Dilimini Belirtme

Bu IEWSClient arayüz ve ExchangeTask görev oluştururken saat dilimi bilgisini ayarlamak için TimeZoneId özelliği sağlar. Aşağıdaki kod parçacığı, saat dilimini nasıl belirteceğinizi gösterir.

client.setTimezoneId("Central Europe Standard Time");

Görevi Güncelle

Aşağıdaki kod parçacıkları, Exchange sunucusundaki bir görevi nasıl güncelleyeceğ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.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);
}

Görev 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.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());
    }
}

Görev İsteği Gönderme

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.

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

Görevi Diske Kaydetme

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

Exchange Server’dan Görevleri Listeleme

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.

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

Exchange Server’dan Görevleri Filtreleme

Aspose.Email, sunucudan tüm görevleri almak yerine belirli görevleri getirme yeteneği sağlar. API, görev durumuna göre (Tamamlandı, Ertelenmiş, Devam Ediyor, Başlanmadı veya Başkalarını Bekliyor) görevleri alabilir. 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.

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