科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道使用 C# 进行 Outlook 2003 编程的简介 3

使用 C# 进行 Outlook 2003 编程的简介 3

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

一旦有了 Application 类型,就能创建新的 Outlook"项".通过 Microsoft.Office.Interop.Outlook.OlItemType 枚举可以列出可能的项:

作者:中国IT实验室 来源:中国IT实验室 2007年9月8日

关键字: Outlook C#

  • 评论
  • 分享微博
  • 分享邮件

  Outlook"Item"类类型

  一旦有了 Application 类型,就能创建新的 Outlook"项".通过 Microsoft.Office.Interop.Outlook.OlItemType 枚举可以列出可能的项:

 public enum OlItemType
{
  olAppointmentItem = 1;
  olContactItem = 2;
  olDistributionListItem = 7;
  olJournalItem = 4;
  olMailItem = 0;
  olNoteItem = 5;
  olPostItem = 6;
  olTaskItem = 3;
}

  假设您希望通过编程来创建新的 Outlook Task 项。要这样做,请指定 OlItemType.olTaskItem 作为 Application.CreateItem() 的参数:

 public static void Main()
{
  // Create an Outlook Application object.
  Application outLookApp = new Application();
  // Create a new TaskItem.
  TaskItem newTask =
    (TaskItem)outLookApp.CreateItem(OlItemType.olTaskItem);
  // Configure the task at hand and save it.
  newTask.Body = "Don't forget to send DOM the links...";
  newTask.DueDate = DateTime.Now;
  newTask.Importance = OlImportance.olImportanceHigh;
  newTask.Subject = "Get DOM to stop bugging me.";
  newTask.Save();
}

 

  注意,CreateItem() 的返回值是一般的 OlItemType;因此需要显式地将结果转换为正确的类型(在这里是 TaskItem)。这时,只需要使用类型的公共接口来配置项。一旦执行,将能够在 Outlook 任务检查器中查找任务(图 4)。


图 4. 通过编程生成的任务

  尽管 OlItemType 枚举的名称很简单,但表 2 详细列出了 OlItemType 枚举的成员与 Application.CreateItem() 产生的返回类型之间的关系。

  表 2.OlItemType enum/Outlook 类类型关系

OlItemType 枚举值 所产生的类型 基本含义
olAppointmentItem AppointmentItem 表示单个约会。
olContactItem ContactItem 表示单个联系人。
olDistributionListItem DistributionListItem 表示一个通讯组列表。
olJournalItem JournalItem 表示单个日记项。
olMailItem MailItem 表示单个电子邮件项。
olNoteItem NoteItem 表示单个注释。
olPostItem PostItem 表示其他人可能浏览的公用文件夹中的公告。
olTaskItem TaskItem 表示单个任务。

  获得现有 Outlook 项

  除了创建新项以外,Outlook 2003 模型还允许获得(并且可能修改)现有项。不管对枚举哪个 Outlook 项感兴趣,基本过程都是:

  * 从 Application.GetNamespace() 获得 NameSpace 类型。

  * 从 NameSpace.GetDefaultFolder() 获得 MAPIFolder 类型。

  * 使用 MAPIFolder.Items 索引器枚举子项。

  指定字符串"MAPI"作为 GetNamespace() 的参数时,将收到一个 NameSpace 类型,该类型表示具体的 Outlook 数据存储的抽象级别(目前,"MAPI"是唯一有效的命名空间)。MAPIFolder 类型可以表示给定用户的邮件存储中的任何文件夹(已删除项、收件箱、日记项等)。文件夹选项的完整范围由 OlDefaultFolders 枚举来表示:

 public enum OlDefaultFolders
{
  olFolderCalendar = 9;
  olFolderConflicts = 19;
  olFolderContacts = 10;
  olFolderDeletedItems = 3;
  olFolderDrafts = 16;
  olFolderInbox = 6;
  olFolderJournal = 11;
  olFolderJunk = 23;
  olFolderLocalFailures = 21;
  olFolderNotes = 12;
  olFolderOutbox = 4;
  olFolderSentMail = 5;
  olFolderServerFailures = 22;
  olFolderSyncIssues = 20;
  olFolderTasks = 13;
  olPublicFoldersAllPublicFolders = 18;
}

  要请求具体的文件夹,请将 OlDefaultFolders 枚举中的值指定为 NameSpace.GetDefaultFolder() 的参数。请考虑以下代码,这些代码枚举了当前用户的任务集合:

 static void Main(string[] args)
{
  // Create an Outlook Application object.
  Application outLookApp = new Application();
  // Print all tasks.
  NameSpace outlookNS = outLookApp.GetNamespace("MAPI");
  MAPIFolder theTasks =
    outlookNS.GetDefaultFolder(OlDefaultFolders.olFolderTasks);
  foreach(TaskItem task in theTasks.Items)
  {
    Console.WriteLine("-> Time Created: {0}", task.CreationTime);
    Console.WriteLine("-> Body: {0}", task.Body);
  }
}

  Inspectors 和 Explorers

  Outlook 对象模型不仅使您能够访问各种项,还定义了用来对用户界面进行操作的类型。Explorer 类型表示用于显示文件夹内容的窗口。另一方面,Inspectors 表示打开后可查看的单个项。Application 类维护一个由所有 Explorers 和 Inspectors 组成的集合,通过使用适当命名的 Explorers / Inspectors 属性可以获得这些类型:

 Application app = new Application();
Explorers theExplorers = app.Explorers;
foreach(Explorer e in theExplorers)
{
  // Do something with each Explorer...
}

  Application 类的 GetActiveExplorer() 和 GetActiveInspector() 方法可以用来获得当前活动的 UI 元素:

 Application app = new Application();
Explorer activeExp = app.ActiveExplorer();
Console.WriteLine("Explorer caption: {0}", activeExp.Caption);

  当您生成自定义的 Outlook 外接程序时,Explorers 和 Inspectors 是很有用的,因为它们让您能够将 UI 小部件附加到现有的 CommandBars 集合中。本文稍后将进一步介绍这方面的情况。

  生成 Outlook 识别的应用程序

  要重点操作 Outlook 的对象模型(而不是生成奇特的用户界面),第一个示例将利用简单的命令行用户界面。如果希望跟着做,请创建一个新的 C# 控制台应用程序,并命名为 OPine.Unix 用户可能知道,"Pine"是一个很流行的命令行电子邮件实用工具的名称。OPine 将模仿 Pine 的功能子集。具体来说,OPine 将响应以下命令:

  * dib:显示收件箱项

  * snm:发送新邮件项

  * cn:创建新注释

  * dn:显示现有注释

  * q:退出 OPine

  通过响应 NewMailEx 事件,OPine 还能在新邮件到达时通知用户。

  注OPine 将利用 ApplicationClass 类型(而不是 Application)来解决一个在随后引用 System.Windows.Forms.dll 程序集时引入的名称冲突。也可以使用如下所示的 C# 别名解决名称冲突:

 using OutLookApp = Microsoft.Office.Interop.Outlook.Application;

  但在这种情况下,使用 –Class 类型将不会损害 OPine 示例。

查看本文来源

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章