探讨如何使用 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) { ... } 在任何情况下,除了 ReceivedTime、SenderName 和 Subject 属性,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