Работа с задачами Outlook

Создание, сохранение и чтение задач

Aspose.Email для C++ позволяет создавать задачи Outlook и сохранять их в формате MSG. Класс MapiTask предоставляет ряд свойств, таких как Percentcomplete, Estimatedeffort, ActualEffort, History, LastUpdate и другие, для хранения и установки информации, необходимой для задачи Outlook. В этой статье показано, как создать, сохранить и прочитать MapiTask с диска. Для создания и сохранения задачи на диск:

  1. Создайте новый объект класса MapiTask.
  2. Введите информацию о свойствах задачи.
  3. Сохраните задачу на диск в формате MSG.

Следующий фрагмент кода показывает, как создать, сохранить и прочитать задачи.

For complete examples and data files, please go to https://github.com/kashifiqb/Aspose.Email-for-C
// The path to the File directory.
System::String dataDir = RunExamples::GetDataDir_Outlook();
System::SharedPtr<MapiTask> task = System::MakeObject<MapiTask>(L"To Do", L"Just click and type to add new task", System::DateTime::get_Now(), System::DateTime::get_Now().AddDays(3));
task->set_PercentComplete(20);
task->set_EstimatedEffort(2000);
task->set_ActualEffort(20);
task->set_History(Aspose::Email::Outlook::MapiTaskHistory::Assigned);
task->set_LastUpdate(System::DateTime::get_Now());
task->get_Users()->set_Owner(L"Darius");
task->get_Users()->set_LastAssigner(L"Harkness");
task->get_Users()->set_LastDelegate(L"Harkness");
task->get_Users()->set_Ownership(Aspose::Email::Outlook::MapiTaskOwnership::AssignersCopy);
task->set_Companies(System::MakeArray<System::String>({L"company1", L"company2", L"company3"}));
task->set_Categories(System::MakeArray<System::String>({L"category1", L"category2", L"category3"}));
task->set_Mileage(L"Some test mileage");
task->set_Billing(L"Test billing information");
task->get_Users()->set_Delegator(L"Test Delegator");
task->set_Sensitivity(Aspose::Email::Outlook::Pst::MapiSensitivity::Personal);
task->set_Status(Aspose::Email::Outlook::MapiTaskStatus::Complete);
task->set_EstimatedEffort(5);
task->Save(dataDir + L"MapiTask.msg", Aspose::Email::Outlook::TaskSaveFormat::Msg);

Чтение MapiTask

Объект класса MapiTask используется для преобразования объекта MapiMessage, который загружает задачу с диска в формате MSG. Следующий фрагмент кода показывает, как читать MapiTask.

For complete examples and data files, please go to https://github.com/kashifiqb/Aspose.Email-for-C
System::SharedPtr<MapiMessage> msg = MapiMessage::FromFile(dataDir + L"Contact.msg");
System::SharedPtr<MapiContact> mapiContact = System::DynamicCast<Aspose::Email::Outlook::MapiContact>(msg->ToMapiMessageItem());

Чтение задачи VToDo

Задачи Google, экспортированные в формате iCalendar как события VToDo, могут быть загружены с использованием класса MapiTask, как показано в следующем образце кода. Следующий фрагмент кода показывает, как читать задачу VToDo.

For complete examples and data files, please go to https://github.com/kashifiqb/Aspose.Email-for-C
System::SharedPtr<MapiTask> task = MapiTask::FromVTodo(dataDir + L"VToDoTask.ics");
task->Save(dataDir + L"VToDo_out.msg", Aspose::Email::Outlook::TaskSaveFormat::Msg);

Добавление информации о напоминании к MapiTask

Подобно Microsoft Outlook, Aspose.Email может добавлять информацию о напоминании к MapiTask. Следующий фрагмент кода показывает, как добавлять информацию о напоминании к MapiTask.

For complete examples and data files, please go to https://github.com/kashifiqb/Aspose.Email-for-C
// The path to the File directory.
System::String dataDir = RunExamples::GetDataDir_Outlook();
// Create MapiTask and set Task Properties
System::SharedPtr<MapiTask> testTask = System::MakeObject<MapiTask>(L"task with reminder", L"this is a body", System::DateTime::get_Now(), System::DateTime::get_Now().AddHours(1));
testTask->set_ReminderSet(true);
testTask->set_ReminderTime(System::DateTime::get_Now());
testTask->set_ReminderFileParameter(dataDir + L"Alarm01.wav");
testTask->Save(dataDir + L"AddReminderInformationToMapiTask_out", Aspose::Email::Outlook::TaskSaveFormat::Msg);

Добавление вложений к MapiTask

Следующий фрагмент кода показывает, как добавлять вложения к MapiTask.

For complete examples and data files, please go to https://github.com/kashifiqb/Aspose.Email-for-C
// The path to the File directory.
System::String dataDir = RunExamples::GetDataDir_Outlook();
System::String attachmentContent = L"Test attachment body";
System::String attachmentName = L"Test attachment name";
System::SharedPtr<MapiTask> testTask = System::MakeObject<MapiTask>(L"Task with attacment", L"Test body of task with attacment", System::DateTime::get_Now(), System::DateTime::get_Now().AddHours(1));
testTask->get_Attachments()->Add(attachmentName, System::Text::Encoding::get_Unicode()->GetBytes(attachmentContent));
testTask->Save(dataDir + L"AddAttachmentsToMapiTask_out", Aspose::Email::Outlook::TaskSaveFormat::Msg);

Добавление повторений к MapiTask

Aspose.Email позволяет создавать повторяющуюся задачу, где повторение может быть ежедневным, еженедельным, ежемесячным или ежегодным. Следующий фрагмент кода показывает, как создать задачу с различными типами повторений.

For complete examples and data files, please go to https://github.com/kashifiqb/Aspose.Email-for-C
System::DateTime startDate(2015, 4, 30, 10, 00, 00);
System::SharedPtr<MapiTask> task = System::MakeObject<MapiTask>(L"abc", L"def", startDate, startDate.AddHours(1));
task->set_State(Aspose::Email::Outlook::MapiTaskState::NotAssigned);
// Set the weekly recurrence
auto rec = System::MakeObject<MapiCalendarDailyRecurrencePattern>();
rec->set_PatternType(Aspose::Email::Outlook::MapiCalendarRecurrencePatternType::Day);
rec->set_Period(1);
rec->set_WeekStartDay(System::DayOfWeek::Sunday);
rec->set_EndType(Aspose::Email::Outlook::MapiCalendarRecurrenceEndType::NeverEnd);
rec->set_OccurrenceCount(0);
task->set_Recurrence(rec);
task->Save(dataDir + L"AsposeDaily_out.msg", Aspose::Email::Outlook::TaskSaveFormat::Msg);
// Set the weekly recurrence
auto rec1 = System::MakeObject<MapiCalendarWeeklyRecurrencePattern>();
rec1->set_PatternType(Aspose::Email::Outlook::MapiCalendarRecurrencePatternType::Week);
rec1->set_Period(1);
rec1->set_DayOfWeek(Aspose::Email::Outlook::MapiCalendarDayOfWeek::Wednesday);
rec1->set_EndType(Aspose::Email::Outlook::MapiCalendarRecurrenceEndType::NeverEnd);
rec1->set_OccurrenceCount(0);
task->set_Recurrence(rec1);
task->Save(dataDir + L"AsposeWeekly_out.msg", Aspose::Email::Outlook::TaskSaveFormat::Msg);
// Set the monthly recurrence
auto recMonthly = System::MakeObject<MapiCalendarMonthlyRecurrencePattern>();
recMonthly->set_PatternType(Aspose::Email::Outlook::MapiCalendarRecurrencePatternType::Month);
recMonthly->set_Period(1);
recMonthly->set_EndType(Aspose::Email::Outlook::MapiCalendarRecurrenceEndType::NeverEnd);
recMonthly->set_Day(30);
recMonthly->set_OccurrenceCount(0);
recMonthly->set_WeekStartDay(System::DayOfWeek::Sunday);
task->set_Recurrence(recMonthly);
//task.Save(dataDir + "AsposeMonthly_out.msg", TaskSaveFormat.Msg);
// Set the yearly recurrence
auto recYearly = System::MakeObject<MapiCalendarMonthlyRecurrencePattern>();
recYearly->set_PatternType(Aspose::Email::Outlook::MapiCalendarRecurrencePatternType::Month);
recYearly->set_EndType(Aspose::Email::Outlook::MapiCalendarRecurrenceEndType::NeverEnd);
recYearly->set_OccurrenceCount(10);
recYearly->set_Period(12);
task->set_Recurrence(recYearly);
//task.Save(dataDir + "AsposeYearly_out.msg", TaskSaveFormat.Msg);