Работа с задачами Outlook
Создание, сохранение и чтение задач
Aspose.Email для .NET позволяет создавать задачи Outlook и сохранять их в формате MSG. Класс MapiTask предоставляет ряд свойств, таких как PercentComplete, EstimatedEffort, ActualEffort, History, LastUpdate и другие, для хранения и установки информации, необходимой для задачи Outlook. Эта статья показывает, как создать, сохранить и прочитать MapiTask с диска. Чтобы создать и сохранить задачу на диск:
- Создайте новый объект класса MapiContact.
- Введите информацию о свойствах задачи.
- Сохраните задачу на диск в формате MSG.
Следующий фрагмент кода показывает, как создать, сохранить и прочитать задачи.
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-.NET | |
// The path to the File directory. | |
string dataDir = RunExamples.GetDataDir_Outlook(); | |
MapiTask task = new MapiTask("To Do", "Just click and type to add new task", DateTime.Now, DateTime.Now.AddDays(3)); | |
task.PercentComplete = 20; | |
task.EstimatedEffort = 2000; | |
task.ActualEffort = 20; | |
task.History = MapiTaskHistory.Assigned; | |
task.LastUpdate = DateTime.Now; | |
task.Users.Owner = "Darius"; | |
task.Users.LastAssigner = "Harkness"; | |
task.Users.LastDelegate = "Harkness"; | |
task.Users.Ownership = MapiTaskOwnership.AssignersCopy; | |
task.Companies = new string[] { "company1", "company2", "company3" }; | |
task.Categories = new string[] { "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.EstimatedEffort = 5; | |
task.Save(dataDir + "MapiTask.msg", TaskSaveFormat.Msg); |
Чтение MapiTask
Объект класса MapiContact используется для приведения объекта MapiMessage к типу, который загружает задачу с диска в формате MSG. Следующий фрагмент кода показывает, как прочитать MapiTask.
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-.NET | |
MapiMessage msg = MapiMessage.FromFile(dataDir + "Contact.msg"); | |
MapiContact mapiContact = (MapiContact)msg.ToMapiMessageItem(); |
Чтение задачи VToDo
Задачи Google, экспортированные в формате iCalendar как события VToDo, могут быть загружены с использованием класса MapiTask, как показано в следующем примере кода. Следующий фрагмент кода показывает, как прочитать задачу VToDo.
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-.NET | |
MapiTask task = MapiTask.FromVTodo(dataDir + "VToDoTask.ics"); | |
task.Save(dataDir + "VToDo_out.msg", 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-for-.NET | |
// The path to the File directory. | |
string dataDir = RunExamples.GetDataDir_Outlook(); | |
// Create MapiTask and set Task Properties | |
MapiTask testTask = new MapiTask("task with reminder", "this is a body", DateTime.Now, DateTime.Now.AddHours(1)); | |
testTask.ReminderSet = true; | |
testTask.ReminderTime = DateTime.Now; | |
testTask.ReminderFileParameter =dataDir + "Alarm01.wav"; | |
testTask.Save(dataDir + "AddReminderInformationToMapiTask_out", TaskSaveFormat.Msg); |
Добавление вложений к MapiTask
Следующий фрагмент кода показывает, как добавить вложения к MapiTask.
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-.NET | |
// The path to the File directory. | |
string dataDir = RunExamples.GetDataDir_Outlook(); | |
string attachmentContent = "Test attachment body"; | |
string attachmentName = "Test attachment name"; | |
MapiTask testTask = new MapiTask("Task with attacment", "Test body of task with attacment", DateTime.Now, DateTime.Now.AddHours(1)); | |
testTask.Attachments.Add(attachmentName, Encoding.Unicode.GetBytes(attachmentContent)); | |
testTask.Save(dataDir + "AddAttachmentsToMapiTask_out", TaskSaveFormat.Msg); |
Добавление повторений к MapiTask
Aspose.Email позволяет создавать повторяющуюся задачу, где повторение может быть ежедневным, еженедельным, ежемесячным или ежегодным. Следующий фрагмент кода показывает, как создать задачу с различными типами повторений.
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-.NET | |
DateTime startDate = new DateTime(2015, 04, 30, 10, 00, 00); | |
MapiTask task = new MapiTask("abc", "def", startDate, startDate.AddHours(1)); | |
task.State = MapiTaskState.NotAssigned; | |
// Set the weekly recurrence | |
var rec = new MapiCalendarDailyRecurrencePattern | |
{ | |
PatternType = MapiCalendarRecurrencePatternType.Day, | |
Period = 1, | |
WeekStartDay = DayOfWeek.Sunday, | |
EndType = MapiCalendarRecurrenceEndType.NeverEnd, | |
OccurrenceCount = 0, | |
}; | |
task.Recurrence = rec; | |
task.Save(dataDir + "AsposeDaily_out.msg", TaskSaveFormat.Msg); | |
// Set the weekly recurrence | |
var rec1 = new MapiCalendarWeeklyRecurrencePattern | |
{ | |
PatternType = MapiCalendarRecurrencePatternType.Week, | |
Period = 1, | |
DayOfWeek = MapiCalendarDayOfWeek.Wednesday, | |
EndType = MapiCalendarRecurrenceEndType.NeverEnd, | |
OccurrenceCount = 0, | |
}; | |
task.Recurrence = rec1; | |
task.Save(dataDir + "AsposeWeekly_out.msg", TaskSaveFormat.Msg); | |
// Set the monthly recurrence | |
var recMonthly = new MapiCalendarMonthlyRecurrencePattern | |
{ | |
PatternType = MapiCalendarRecurrencePatternType.Month, | |
Period = 1, | |
EndType = MapiCalendarRecurrenceEndType.NeverEnd, | |
Day = 30, | |
OccurrenceCount = 0, | |
WeekStartDay = DayOfWeek.Sunday, | |
}; | |
task.Recurrence = recMonthly; | |
//task.Save(dataDir + "AsposeMonthly_out.msg", TaskSaveFormat.Msg); | |
// Set the yearly recurrence | |
var recYearly = new MapiCalendarMonthlyRecurrencePattern | |
{ | |
PatternType = MapiCalendarRecurrencePatternType.Month, | |
EndType = MapiCalendarRecurrenceEndType.NeverEnd, | |
OccurrenceCount = 10, | |
Period = 12, | |
}; | |
task.Recurrence = recYearly; | |
//task.Save(dataDir + "AsposeYearly_out.msg", TaskSaveFormat.Msg); |
Конвертация задачи в MHT
Aspose.Email может генерировать вывод в формате MailMessage во время конвертации MapiTask в MHT.
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-.NET | |
MapiMessage msg = MapiMessage.FromFile(dataDir + "MapiTask.msg"); | |
MhtSaveOptions opt = SaveOptions.DefaultMhtml; | |
opt.MhtFormatOptions = MhtFormatOptions.RenderTaskFields | MhtFormatOptions.WriteHeader; | |
opt.FormatTemplates.Clear(); | |
opt.FormatTemplates.Add(MhtTemplateName.Task.Subject, "<span class='headerLineTitle'>Subject:</span><span class='headerLineText'>{0}</span><br/>"); | |
opt.FormatTemplates.Add(MhtTemplateName.Task.ActualWork, "<span class='headerLineTitle'>Actual Work:</span><span class='headerLineText'>{0}</span><br/>"); | |
opt.FormatTemplates.Add(MhtTemplateName.Task.TotalWork, "<span class='headerLineTitle'>Total Work:</span><span class='headerLineText'>{0}</span><br/>"); | |
opt.FormatTemplates.Add(MhtTemplateName.Task.Status, "<span class='headerLineTitle'>Status:</span><span class='headerLineText'>{0}</span><br/>"); | |
opt.FormatTemplates.Add(MhtTemplateName.Task.Owner, "<span class='headerLineTitle'>Owner:</span><span class='headerLineText'>{0}</span><br/>"); | |
opt.FormatTemplates.Add(MhtTemplateName.Task.Priority, "<span class='headerLineTitle'>Priority:</span><span class='headerLineText'>{0}</span><br/>"); | |
msg.Save(dataDir + "MapiTask_out.mht", opt); |