Outlook VSTO外接程序如何将创建的Task保存到指定邮箱文件夹
解决方法
你不需要找TaskItem的路径属性做设置,两种方式都可以实现存入指定文件夹:
方法1:基于现有代码改造,创建后移动到目标文件夹
先拿到目标文件夹对象,调用Move方法即可,移动操作会自动保存任务,不需要再单独调用Save:
Outlook.TaskItem t = this.Application.CreateItem(Outlook.OlItemType.olTaskItem) as Outlook.TaskItem; if (t != null) { t.Subject = "Hello, Reader"; // 获取目标邮箱的命名空间 Outlook.NameSpace ns = this.Application.GetNamespace("MAPI"); // 替换成你要存入的目标邮箱地址 Outlook.Store targetStore = ns.Stores["目标邮箱@xxx.com"]; // 获取目标邮箱的默认任务文件夹,如果是自定义子文件夹可以继续用Folders索引获取 Outlook.MAPIFolder targetFolder = targetStore.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderTasks); // 示例:如果要存入任务文件夹下的名为"工作任务"的子文件夹,打开下面这行注释即可 // targetFolder = targetFolder.Folders["工作任务"]; // 移动到目标文件夹 t.Move(targetFolder); }
方法2:直接在目标文件夹创建任务(更高效,无需移动)
直接从目标文件夹的Items集合创建任务,保存后默认就归属到该文件夹:
Outlook.NameSpace ns = this.Application.GetNamespace("MAPI"); Outlook.Store targetStore = ns.Stores["目标邮箱@xxx.com"]; Outlook.MAPIFolder targetFolder = targetStore.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderTasks); // 直接在目标文件夹下创建任务 Outlook.TaskItem t = targetFolder.Items.Add(Outlook.OlItemType.olTaskItem) as Outlook.TaskItem; if (t != null) { t.Subject = "Hello, Reader"; t.Save(); }
如果你的目标文件夹是完全自定义的非任务类型文件夹,可以逐层通过
Folders索引定位:ns.Folders["邮箱显示名"].Folders["一级文件夹名"].Folders["目标文件夹名"]
内容的提问来源于stack exchange,提问作者Akanksha_p
相关产品推荐
相关产品推荐

