原文:使用 C# 进行 Outlook 2007 编程

探讨如何使用 C# 编程语言生成 Outlook 识别的应用程序和 Outlook 外接程序。

请从"Add References"对话框访问"COM"选项卡,并选择"Microsoft Outlook 12.0 Object Library"

using Microsoft.Office.Interop.Outlook;

 

表 1选择 Application 类型的成员

CreateItem()

允许通过编程创建新的 Outlook 项。

GetNamespace()

提供对数据存储项的访问。到 Outlook 2007 ,MAPI 是唯一可以使用的命名空间,它用于访问 Outlook 文件夹组(收件箱、注释等)。

Quit()

终止当前 Outlook 会话。

COMAddIns

该属性允许您在运行时发现插入到当前 Outlook 实例中的外接程序集合。

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

public enum OlItemType

{ olAppointmentItem = 1; olContactItem = 2; olDistributionListItem = 7;...}

表 2 详细列出了 OlItemType 枚举的成员与 Application.CreateItem() 产生的返回类型之间的关系。

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

获得现有 Outlook 项

不管对枚举哪个 Outlook 项感兴趣,基本过程都是:

 

Application.GetNamespace() 获得 NameSpace 类型。

 

NameSpace.GetDefaultFolder() 获得 MAPIFolder 类型。

 

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

指定字符串"MAPI"作为 GetNamespace() 的参数时,将收到一个 NameSpace 类型,该类型表示具体的 Outlook 数据存储的抽象级别(目前,"MAPI"是唯一有效的命名空间)。

MAPIFolder 类型可以表示给定用户的邮件存储中的任何文件夹(已删除项、收件箱、日记项等)。

文件夹选项的完整范围由 OlDefaultFolders 枚举来表示:

public enum OlDefaultFolders { olFolderCalendar = 9; olFolderConflicts = 19;  ...}

要请求具体的文件夹,请将 OlDefaultFolders 枚举中的值指定为 NameSpace.GetDefaultFolder() 的参数。

我们有一个名为 DisplayInbox() 的方法,该方法接受 ApplicationClass 类型作为其唯一参数。DisplayInbox() 的实现将获得当前的 MAPI 命名空间,以便检索收件箱文件夹中的每个 MailItem。在这里,我们将使用 MailItem 类型的各种属性,将接收时间、发件人名称和主题打印到控制台

我们执行了一个动态检查,以确定当前项是否可以被视为 MailItem(通过 C# 的 as 关键字),以及如果这样我们将与类型的各种属性交互。我们执行该动态检查的理由是 Outlook 收件箱的确可以包含超过 MailItem 类型的项(例如,满足请求)。

foreach(MailItem item in inboxFolder.Items) { ... }

在任何情况下,除了 ReceivedTimeSenderNameSubject 属性,MailItem 类型还能够访问附件和重要性级别,以及内容的 HTML 表现形式(通过 HTMLBody 属性)。

与 Outlook 安全更新的冲突 Outlook 启动的以下对话框

在OutLook2007的工具中打开信任中心,点击编程访问,选项选为从不向我发出可疑活动警告即可。

附个人代码:

using Microsoft.Office.Interop.Outlook;

ApplicationClass ac;
NameSpace outlookNS;

outlookNS = ac.GetNamespace("MAPI");
outlookNS.Logon("its8686", "*****#2009",false, true);

MAPIFolder inboxFolder = outlookNS.GetDefaultFolder(OlDefaultFolders.olFolderInbox);

int count = inboxFolder.Items.Count;
foreach (Object obj in inboxFolder.Items)
{
      MailItem item = obj as MailItem;
      if (item != null)
      {
          string  SenderName = item.SenderName;
          string  Subject = item.Subject;
          DateTime  ReceivedTime = item.ReceivedTime;
          string Body = item.Body;
       }

}

outlookNS.Logoff();

可参照http://blog.csdn.net/myfnst/archive/2004/07/06/35651.aspx

使用 C# 进行 Outlook 2007 编程的更多相关文章

  1. 通过编程为Outlook 2007添加邮件规则

    Outlook 所支持的邮件规则相当有用,我们经常需要针对某些特征的邮件做特殊的处理.例如将其移动到某个特定文件夹,或者删除它等等. Outlook所支持的邮件规则主要两大类:收到邮件时和发送邮件时 ...

  2. 如何修复Outlook 2007源文件.PST及性能优化补丁

    kb961752 微软发布了改善 Outlook 2007 个人数据文件性能的补丁,该补丁未来将会集成于 SP2 中,但是现在对于SP1用户可以提前得到它.   获取地址: http://suppor ...

  3. 使用 C# 进行 Outlook 2003 编程

    原文:使用 C# 进行 Outlook 2003 编程 摘要: 本文介绍了 Microsoft Outlook 2003 对象模型介,并探讨了如何使用 C# 编程语言生成 Outlook 识别的应用程 ...

  4. [转]Creating a custom ribbon for Outlook 2013, 2010 and toolbar for Outlook 2007, 2003 – C# sample

    本文转自:https://www.add-in-express.com/creating-addins-blog/2013/05/21/outlook-ui-customization-ribbons ...

  5. 2017年10月31日结束Outlook 2007与Office 365的连接

    2017 年10月31日 ,微软即将推出 Office 365中Exchange Online邮箱将需要Outlook for Windows的连接,即通过HTTP Over MAPI方式,传统使用R ...

  6. Outlook 2007 发送邮件

    4 登入以投票 Hi, http://social.msdn.microsoft.com/Forums/zh-TW/6c063b27-7e8a-4963-ad5f-ce7e5ffb2c64/how-t ...

  7. Outlook 2007无法打开链接"由于本机的限制 该操作已被取消"

    编写人:CC阿爸 2014-2-17 近来在日常维护中,经常性的遇到用户在outlook中打开链接,提示[由于本机的限制,该操作已被取消],第一次的在网上搜索到解决办法后, 第二次再处理时,又没能记住 ...

  8. Outlook 2007 实现自动添加密送的方法

    1)在Outlook里面键入Alt+F11打开VBA编辑器:     2)激活左边的工程面板,展开并双击上面的“Project (VbaProject.OTM)/Microsoft Office Ou ...

  9. outlook 2007 IMAP设置和配置

    以Outlook2007为例(Outlook2003操作基本类似).  1.依次点击“工具”>“帐户设置”. 2.在“帐户设置”页中点击“新建”> 不需要做任何选择,点击下一步. 3.填写 ...

随机推荐

  1. 开玩笑html5(五岁以下儿童)---绕地球月球,地球绕太阳运动(canvas实现,同样可以移动哦)

    请珍惜劳动小编成果,这篇文章是原来小编,转载请注明出处. 速度的參数与真实速度有点差距.大家能够自行调整 <!DOCTYPE html> <html> <head> ...

  2. sql 学习笔记 档

    从下面的内容 3c   school 1:Sql 它分为两部分: 6 2:查询 7 3:插入: 9 4:数据库更新 UPDATE 9 5:删除 DELETE 10 6:Sql TOP 子句: 10 7 ...

  3. 分布式中使用Redis实现Session共享(转)

    上一篇介绍了如何使用nginx+iis部署一个简单的分布式系统,文章结尾留下了几个问题,其中一个是"如何解决多站点下Session共享".这篇文章将会介绍如何使用Redis,下一篇 ...

  4. Linux 编程学习笔记----命令行参数处理

    转载请注明出处.http://blog.csdn.net/suool/article/details/38089001 问题引入----命令行參数及解析 在使用linux时,与windows最大的不同 ...

  5. UVa 699 落叶

    意甲冠军:我几乎不记得的题意!.! 它是一个长坑..我们从根节点开始,留下每一步,保存横坐标1,正确的一步加上横坐标1. 那么同样的横坐标统计data值总和. 思维:我来想,这可以递归成就.上就能够算 ...

  6. CSDN markdown 编辑 第五章 UML

    这里大概只能产生两种类型的图: 序列图 框图 序列图 ```sequence A->B: 一句话证明你非常寂寞. Note right of B: thinking B->B: count ...

  7. ZOJ3605-Find the Marble(可能性DP)

    Find the Marble Time Limit: 2 Seconds      Memory Limit: 65536 KB Alice and Bob are playing a game. ...

  8. 基于ORACLE建表和循环回路来创建数据库存储过程SQL语句来实现

    一个.概要 在实际的软件开发项目.我们经常会遇到需要创造更多的相同类型的数据库表或存储过程时,.例如.假设按照尾号点表的ID号,然后,你需要创建10用户信息表,的用户信息放在同一个表中. 对于类型同样 ...

  9. 用Owin Host实现脱离IIS跑Web API单元测试

    开发笔记:用Owin Host实现脱离IIS跑Web API单元测试   今天在开发一个ASP.NET Web API项目写单元测试时,实在无法忍受之前的笨方法,决定改过自新. 之前Web API的单 ...

  10. Matlab与.NET混合编程解决人脸识别问题

    原文:[原创]Matlab与.NET混合编程解决人脸识别问题 如果这些文章对你有用,有帮助,期待更多开源组件介绍,请不要吝啬手中的鼠标. [原创分享]Matlab.NET混编调用Figure窗体 ht ...