Exchange सर्वर पर टास्क्स के साथ काम करना

टास्क के साथ काम करना

Aspose.Email एक्सचेंज पर टास्क प्रोसेसिंग का समर्थन करता है ExchangeTask क्लास। विभिन्न गुणों को प्रदर्शित करता है ExchangeTask, जैसे Subject, स्थिति, समाप्ति तिथि, and प्राथमिकता, Exchange पर टास्क कॉन्फ़िगर करने के लिए उपयोग किया जा सकता है। The EWSClient क्लास फ़ंक्शन जैसे प्रकट करता है createTask, updateTask, and deleteTask जो Exchange पर टास्क्स प्रोसेस करने के लिए उपयोग किए जाते हैं। यह लेख दर्शाता है कि कैसे:

  • एक नया टास्क बनाएं।
  • टास्क का टाइमज़ोन सेट करें।
  • एक टास्क अपडेट करें।
  • एक टास्क हटाएँ।
  • टास्क अनुरोध भेजें
  • टास्क को डिस्क पर सहेजें

नया टास्क बनाएं

निम्न कोड स्निपेट दर्शाता है कि नया टास्क कैसे बनाया जाए।

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

टाइमज़ोन निर्दिष्ट करना

यह IEWSClient इंटरफ़ेस और ExchangeTask टास्क बनाते समय टाइमज़ोन जानकारी सेट करने के लिए TimeZoneId प्रॉपर्टी प्रदान करता है। नीचे का कोड स्निपेट दर्शाता है कि टाइमज़ोन कैसे निर्दिष्ट करें।

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

टास्क अपडेट करना

निम्न कोड स्निपेट्स दर्शाते हैं कि Exchange सर्वर पर टास्क को कैसे अपडेट किया जाए।

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

टास्क हटाना

निम्न कोड स्निपेट दर्शाता है कि Exchange सर्वर पर टास्क को कैसे हटाया जाए।

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

टास्क अनुरोध भेजना

Aspose.Email Exchange सेवा Outlook के समान टास्क अनुरोध भेजने की सुविधा प्रदान करती है। नीचे का कोड स्निपेट दर्शाता है कि डिस्क से टास्क अनुरोध संदेश को लोड करके उसे कैसे भेजा जाए, उपयोग करके 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);

टास्क को डिस्क पर सहेजना

Aspose.Email Outlook MSG फॉर्मेट में Exchange टास्क्स को डिस्क पर सेव करने की भी अनुमति देता है। नीचे का कोड स्निपेट दर्शाता है कि टास्क को डिस्क पर कैसे सहेजा जाए।

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 से टास्क्स की सूची बनाना

IEWSClient प्रदान करता है listTasks विधि जो Exchange Web Service से टास्क्स को प्राप्त करने के लिए उपयोग की जा सकती है। इसमें कई ओवरलोड्स हैं जो किसी विशिष्ट फ़ोल्डर या कुछ खोज मानदंडों के आधार पर टास्क्स की सूची प्राप्त करने के लिए उपयोग किए जा सकते हैं। नीचे का कोड नमूना टास्क्स फ़ोल्डर से सभी या विशिष्ट टास्क्स को प्राप्त करने को दर्शाता है।

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 से टास्क्स फ़िल्टर करना

Aspose.Email सर्वर से सभी टास्क्स प्राप्त करने के बजाय विशिष्ट टास्क्स प्राप्त करने की क्षमता प्रदान करता है। API टास्क की स्थिति जैसे Completed, Deferred, In Progress, Not started या Waiting on others के आधार पर टास्क्स प्राप्त करने के लिए उपयोग की जा सकती है। The ExchangeQueryBuilder क्लास का उपयोग Status प्रॉपर्टी के माध्यम से वांछित मानदंड निर्दिष्ट करने के लिए किया जा सकता है। यह Exchange सर्वर से वांछित टास्क्स प्राप्त करने के लिए कई शर्तें निर्दिष्ट करने की भी अनुमति देता है। यह नीचे के कोड नमूने द्वारा दर्शाया गया है।

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