创建、保存和读取 Outlook 任务

本文介绍了独立的 Outlook MapiTask 项目以 MSG 保存。要在 PST 中存储和读取任务,请参见 在 PST 文件中管理任务、日志和笔记.

创建 Outlook 任务

Aspose.Email for .NET 允许您创建 Outlook 任务并保存为 MSG 格式。 MapiTask 该类提供多个属性,例如 PercentComplete, EstimatedEffort, ActualEffort, History, LastUpdate,以及其他,以满足和设置 Outlook 任务所需的信息。本文展示了如何创建、保存和读取一个 MapiTask 从磁盘。创建并保存任务到磁盘的方法如下:

  1. 实例化一个新的对象 MapiTask 类。
  2. 输入任务属性信息。
  3. 以 MSG 格式将任务保存到磁盘。

下面的代码片段展示了如何创建、保存和读取任务。

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

读取 MAPI 任务

以 MSG 格式保存的任务可以加载到 MapiMessage 随后转换为 MapiTask 并可访问其特定属性,如主题和状态。以下代码示例演示如何读取和操作已保存 MSG 文件中的任务详情:

MapiMessage msg = MapiMessage.FromFile(dataDir + "MapiTask.msg");
MapiTask task = (MapiTask)msg.ToMapiMessageItem();

Console.WriteLine("Subject: " + task.Subject);
Console.WriteLine("Status: " + task.Status);
Console.WriteLine("Percent complete: " + task.PercentComplete);

读取 VToDo 任务

以 iCalendar 格式导出的 Outlook 任务(VToDo 事件)可使用以下方式加载: MapiTask 类,如下代码示例所示。以下代码片段展示了如何读取 VToDo 任务。

MapiTask task = MapiTask.FromVTodo(dataDir + "VToDoTask.ics");
task.Save(dataDir + "VToDo_out.msg", TaskSaveFormat.Msg);

为 MAPI 任务添加提醒信息

类似于 Microsoft Outlook,Aspose.Email 可以向一个添加提醒信息 MapiTask。以下代码片段展示了如何向一个添加提醒信息 MapiTask.

// 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.msg", TaskSaveFormat.Msg);

为 MAPI 任务添加附件

以下代码片段展示了如何向一个添加附件 MapiTask.

// 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 attachment", "Test body of task with attachment", DateTime.Now, DateTime.Now.AddHours(1));
testTask.Attachments.Add(attachmentName, Encoding.Unicode.GetBytes(attachmentContent));
testTask.Save(dataDir + "AddAttachmentsToMapiTask_out.msg", TaskSaveFormat.Msg);

为 MAPI 任务添加循环

Aspose.Email 允许创建循环任务,循环周期可以是每日、每周、每月或每年。以下代码片段展示了如何使用不同的循环类型创建任务。

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 daily 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。

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

保留任务字段的 MSG 转 HTML 转换

HtmlFormatOptions.RenderTaskFields 枚举允许您指定在保存的 HTML 文件的头部中包含任务字段。以下代码片段展示了在保存 HTML 文件时如何在头部保留任务字段:

var msg = MapiMessage.Load("task.msg");
HtmlSaveOptions opt = SaveOptions.DefaultHtml;
opt.HtmlFormatOptions = HtmlFormatOptions.WriteHeader | HtmlFormatOptions.RenderTaskFields;
msg.Save("task.html", opt);

另见