Trabajando con Tareas de Outlook

Crear, Guardar y Leer Tareas

Aspose.Email para C++ te permite crear tareas de Outlook y guardarlas en formato MSG. La clase MapiTask proporciona una serie de propiedades como Percentcomplete, Estimatedeffort, ActualEffort, History, LastUpdate y otras, para acomodar y establecer la información requerida para una tarea de Outlook. Este artículo muestra cómo crear, guardar y leer un MapiTask desde el disco. Para crear y guardar una tarea en el disco:

  1. Instanciar un nuevo objeto de la clase MapiTask.
  2. Ingresar la información de las propiedades de la tarea.
  3. Guardar la tarea en el disco en formato MSG.

El siguiente fragmento de código te muestra cómo crear, guardar y leer Tareas.

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

Leer un MapiTask

El objeto de la clase MapiTask se utiliza para transformar el objeto MapiMessage que carga una tarea desde el disco en formato MSG. El siguiente fragmento de código te muestra cómo leer un 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());

Leer una Tarea VToDo

Las tareas de Google exportadas en formato iCalendar como eventos VToDo se pueden cargar utilizando la clase MapiTask como se muestra en el siguiente ejemplo de código. El siguiente fragmento de código te muestra cómo leer una Tarea 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);

Agregar Información de Recordatorio a un MapiTask

Similar a Microsoft Outlook, Aspose.Email puede agregar información de recordatorio a un MapiTask. El siguiente fragmento de código te muestra cómo agregar información de recordatorio a un 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);

Agregar Adjuntos a un MapiTask

El siguiente fragmento de código te muestra cómo agregar adjuntos a un 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);

Agregar Recurrencia a MapiTask

Aspose.Email permite crear una tarea recurrente donde la recurrencia puede ser diaria, semanal, mensual o anual. El siguiente fragmento de código te muestra cómo crear una tarea con diferentes tipos de recurrencia.

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