频道直达 - 专题 - 新闻 - 技巧 - 组网 - 开发 - 安全 - web编程 - 图像 - 操作系统 - 数据库 - 教育 - 旅游 - 健康 - 时尚 - 驱动 - 软件 - 游戏 - 多媒体 - ERP - 讨论组

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

来源: 作者: 出处:巧巧读书 2007-07-22 进入讨论组
上一页 1 2 3 4 5 6 7 8 9 10 11 12 13 14 

  实现电子邮件统计逻辑

  最后的任务是在 Click 事件处理程序中实现逻辑。我们将利用 Outlook 对象模型来确定每天和每月所接收和发送的电子邮件数。在生成 OPine 以后,以下逻辑应当相当简单:

 private void btnGetEMailStats_Click(CommandBarButton Ctrl,
  ref bool CancelDefault)
{
  string statInfo;
  DateTime today = DateTime.Today;
  // The stats we are tracing.
  int eMailsToday = 0;
  int eMailsThisMonth = 0;
  int eMailSentToday = 0;
  int eMailSentThisMonth = 0;
  // Get items in user's inbox.
  NameSpace outlookNS = applicationObject.GetNamespace("MAPI");
  MAPIFolder inboxFolder
    = outlookNS.GetDefaultFolder(OlDefaultFolders.olFolderInbox);
  // Compare time received to current day / month
  // and update our counters.
  foreach(object item in inboxFolder.Items)
  {
    MailItem mi = item as MailItem;
    if(mi != null)
    {
      if(mi.ReceivedTime.Day == today.Day)
        eMailsToday++;
      if(mi.ReceivedTime.Month == today.Month)
        eMailsThisMonth++;
    }
  }
  // Build first part of statInfo string.
  statInfo = string.Format("E-mails received today: {0}\n",
    eMailsToday);
  statInfo += string.Format("E-mails received this Month: {0}\n",
    eMailsThisMonth);
  statInfo += "--------------------------------------\n";
  // Get items in user's sent item folder and
  // test again.
  MAPIFolder SentFolder =
    outlookNS.GetDefaultFolder(OlDefaultFolders.olFolderSentMail);
  foreach(object item in SentFolder.Items)
  {
    // See if current item is a MailItem
    MailItem mi = item as MailItem;
    if(mi != null)
    {
      // It is, so get day/month stats.
      if(mi.SentOn.Day == today.Day)
        eMailSentToday++;
      if(mi.SentOn.Month == today.Month)
        eMailSentThisMonth++;
    }
  }
  // Build last part of statInfo string.
  statInfo += string.Format("E-mails sent today: {0}\n",
    eMailSentToday);
  statInfo += string.Format("E-mails sent this Month: {0}\n",
    eMailSentThisMonth);
  // Show results.
  MessageBox.Show(statInfo, "Current E-mail stats");
}

 

  到这里,我们的外接程序就完成了!假定您能够编译项目而没有错误,那么现在就可以注册和测试 EMailStatsAddIn 功能了。

  注册共享外接程序

  请回忆,在用 Visual Studio.NET 2003 创建共享外接程序项目时,您收到过一个安装项目。要生成可以使用的 EMailStatsAddIn,请在解决方案资源管理器中右键单击 EMailStatsAddInSetup 项目图标,并选择"Rebuild"(图 11)。

使用 C# 进行 Outlook 2003 编程的简介(图十一)

图 11. 生成安装程序

  在此以后,项目目录将包含标准的安装可执行文件和 *msi 安装程序文件。可以使用这些文件安装外接程序,也可以直接在 Visual Studio.NET 2003 中进行安装(图 12)。

使用 C# 进行 Outlook 2003 编程的简介(图十二)

图 12. 通过 VisualStudio.NET 2003 安装 EMailStatsAddIn

  现在,当启动 Outlook 2003 时,应当在标准命令栏中找到 Statistics 按钮。毫无疑问,单击它时,将看到今天的电子邮件统计信息(图 13)。

使用 C# 进行 Outlook 2003 编程的简介(图十三)

图 13. 运行中的 EMailStatsAddIn

  注 值得说明的是,为了满足您的需要,可能需要对 Visual Studio.NET 2003 生成的安装逻辑加以修改。您的 .NET 程序集可能无法将自己正确注册为可被 COM 使用。如果出现这样的情况,托管的外接程序就无法出现在 Outlook COM 外接程序对话框中,如果没有将外接程序配置为在启动时启动,这会是很大的问题。Microsoft 的 Omar Shahine 已在 http://go.microsoft.com/fwlink/?LinkId=30833 张贴了这个问题的解决方案。另一个关于该问题的观点可以在 http://blogs.msdn.com/robmen/archive/2004/04/28/122491.aspx 找到。

  小结

  我们已经看到,使用主互操作程序集,。NET 开发人员可以与 Outlook 2003 类型交互。Application 类型是该模型的根,而该模型公开了代表各种 Outlook 项的很多集合。在开发命令行驱动的邮件应用程序 (OPine) 期间,您已经了解如何通过编程创建并获得各个项,以及如何响应选择事件。我们已经阐明,通过创建自定义外接程序,可以对 Outlook 2003 本身进行扩展。Visual Studio.NET 2003 为此提供了具体的项目模板,该模板可以产生实现 IDTExtensibility2 接口的类,以及相关的安装程序项目。

专题:http://www.qqread.com/csharp/u301211.html 更多文章 更多内容请看Java编程开发手册专题,或进入讨论组讨论。
更多专题 【深 度 阅 读】 相 关 文 章
    上一页 1 2 3 4 5 6 7 8 9 10 11 12 13 14 
    收藏此文】【 】【打印】【关闭
    较早的文章:C# GDI+编程之基础篇

    较新的文章:Orcas版C#3.0的新特性
    相关图文阅读
    频道图文推荐
    健 康 咨 询
    时 尚 咨 询
    巧巧读书宗旨
    相关专题
    讨论组问题推荐
    站内各频道最新更新文档
    站内最新制作专题
    热门关键字导读
    Photoshop教 程照片处理 照片制作 PS快捷键 抠图
    计 算 机 故 障XP系统修复
    艺 术 与 设 计设计 流媒体 设计欣赏 边框
    计 算 机 安 全ARP
    站内频道文章精选
    巧巧电脑频道编辑信箱  告诉我们您想看的专题或文章