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

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

Aspose.Email для .NET позволяет создавать задачи Outlook и сохранять их в формате MSG. Класс MapiTask предоставляет ряд свойств, таких как Percentcomplete, Estimatedeffort, ActualEffort, History, LastUpdate и другие, чтобы учитывать и устанавливать информацию, необходимую для задачи Outlook. Эта статья показывает, как создать, сохранить и прочитать MapiTask с диска. Чтобы создать и сохранить задачу на диск:

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

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

For complete examples and data files, please go to https://github.com/aspose-email/aspose-email-python-dotnet
task = MapiTask("To Do", "Just click and type to add new task", dt.datetime(2018, 6, 1, 21, 30, 0), dt.datetime(2018, 6, 4, 21, 30, 0))
task.percent_complete = 20
task.estimated_effort = 2000
task.actual_effort = 20
task.history = MapiTaskHistory.ASSIGNED
task.last_update = dt.datetime(2018, 6, 1, 21, 30, 0)
task.users.owner = "Darius"
task.users.last_assigner = "Harkness"
task.users.last_delegate = "Harkness"
task.users.ownership = MapiTaskOwnership.ASSIGNERS_COPY
task.companies = [ "company1", "company2", "company3" ]
task.categories = [ "category1", "category2", "category3" ]
task.mileage = "Some test mileage"
task.billing = "Test billing information"
task.users.delegator = "Test Delegator"
task.sensitivity = MapiSensitivity.PERSONAL
task.status = MapiTaskStatus.COMPLETE
task.estimated_effort = 5
task.save(dataDir + "CreatingAndSavingOutlookTask_out.msg", TaskSaveFormat.MSG)

Чтение MapiTask

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

For complete examples and data files, please go to https://github.com/aspose-email/aspose-email-python-dotnet
message = MapiMessage.from_file("Contact.msg")
apiContact = message.to_mapi_message_item()

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

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

import aspose.email as ae

data_dir = "path/to/data/directory"

task = ae.mapi.MapiTask.from_v_todo(data_dir + "VToDoTask.ics")
task.save(data_dir + "VToDo_out.msg", ae.TaskSaveFormat.Msg)

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

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

For complete examples and data files, please go to https://github.com/aspose-email/aspose-email-python-dotnet
task = MapiTask("To Do", "Just click and type to add new task", dt.datetime(2018, 6, 1, 21, 30, 0), dt.datetime(2018, 6, 4, 21, 30, 0))
task.reminder_set = True
task.reminder_time = dt.datetime(2018, 6, 1, 21, 30, 0)
task.reminder_file_parameter =dataDir + "file://Alarm01.wav"
task.save(dataDir + "AddReminderInformationToMapiTask_out.msg", TaskSaveFormat.MSG)

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

Используйте метод Add класса MapiAttachmentCollection для добавления вложения к MapiTask. Следующий пример кода поможет вам с этим:

import aspose.email as ae
import datetime as dt

task = ae.mapi.MapiTask("Задача с вложением", "Текст задачи с вложением", dt.datetime.now(), dt.datetime.now());
task.attachments.add("Attachment.txt", str.encode("attachment data"))
task.save("AddAttachmentsToMapiTask_out", ae.mapi.TaskSaveFormat.MSG)

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

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

For complete examples and data files, please go to https://github.com/aspose-email/aspose-email-python-dotnet
startDate = dt.datetime(2015, 4, 30, 10, 00, 00)
task = MapiTask("abc", "def", startDate, dt.datetime(2015, 4, 30, 11, 00, 00))
task.state = MapiTaskState.NOT_ASSIGNED
# Set the weekly recurrence
rec = MapiCalendarDailyRecurrencePattern()
rec.pattern_type = MapiCalendarRecurrencePatternType.DAY
rec.period = 1
rec.week_start_day = 0 #0 is for Sunday and so on. WeekStartDay=0
rec.occurrence_count = 0
task.recurrence = True
task.save(dataDir + "AsposeDaily_out.msg", TaskSaveFormat.MSG)
# Set the weekly recurrence
rec1 = MapiCalendarWeeklyRecurrencePattern()
rec1.pattern_type = MapiCalendarRecurrencePatternType.WEEK
rec1.period = 1
rec1.day_of_week = MapiCalendarDayOfWeek.WEDNESDAY
rec1.end_type = MapiCalendarRecurrenceEndType.NEVER_END
rec1.occurrence_count = 0
task.recurrence = rec1
task.save(dataDir + "AsposeWeekly_out.msg", TaskSaveFormat.MSG);
# Set the monthly recurrence
recMonthly = MapiCalendarMonthlyRecurrencePattern()
recMonthly.pattern_type = MapiCalendarRecurrencePatternType.MONTH
recMonthly.period = 1
recMonthly.end_type = MapiCalendarRecurrenceEndType.NEVER_END
recMonthly.day = 30
recMonthly.occurrence_count = 0
recMonthly.week_start_day = 0 #0 is for Sunday and so on. WeekStartDay=0
task.recurrence = recMonthly
task.save(dataDir + "AsposeMonthly_out.msg", TaskSaveFormat.MSG);
# Set the yearly recurrence
recYearly = MapiCalendarMonthlyRecurrencePattern()
recYearly.pattern_type = MapiCalendarRecurrencePatternType.MONTH
recYearly.end_type = MapiCalendarRecurrenceEndType.NEVER_END
recYearly.occurrence_count = 10
recYearly.period = 12
task.recurrence = recYearly
task.save(dataDir + "AsposeYearly_out.msg", TaskSaveFormat.MSG)

Преобразование задачи в MHT

Следующий пример кода демонстрирует, как преобразовать задачу в формат MHT, указывая дополнительные параметры для формата MHT, когда специфические для задачи поля должны быть отображены (RENDER_TASK_FIELDS) и что информация заголовка должна быть включена (WRITE_HEADER). Свойство mht_format_options класса MhtSaveOptions используется для определения дополнительных опций при сохранении в формате MHTML.

import aspose.email as ae

msg = ae.mapi.MapiMessage.load("MapiTask.msg")

opt = ae.SaveOptions.default_mhtml
opt.mht_format_options = ae.MhtFormatOptions.RENDER_TASK_FIELDS | ae.MhtFormatOptions.WRITE_HEADER

msg.save("MapiTask_out.mht", opt)