事实上,Exchange Server 2003根本不支持与.Net直接交互,据说Exchange Server 2007开放了一组Web Service接口,如果使用了Exchange Server 2007,则可以直接通过Web Service接口直接与Exchange server交互,不过我们公司目前还是使用exchange server 2003,所以也没有测试这组接口要如何使用。
对使用exchange server 2003的环境来说,代价最低的应该说就是调用outlook的功能了,以下列举与outlook交互的一些常用操作。
首先,在项目中添加对outlook组件的引用(Project—>Add Reference—>切换到COM标签页—>选择Microsoft Outlook 14.0 Object Library),这里outlook的具体版本号取决于本地安装的outlook版本,我安装的是outlook 2010, 所以显示的版本号是14.0,这个关系不大,各个版本之间的代码似乎是完全相同的。
以下代码列举收件箱中的未读邮件:
var app = new Microsoft.Office.Interop.Outlook.Application();
var ns = app.GetNamespace("MAPI");
ns.Logon("Outlook", Type.Missing, false, false);
var inbox = ns.GetDefaultFolder(Microsoft.Office.Interop.Outlook.OlDefaultFolders.olFolderInbox);
for (int i = 1; i <= inbox.Items.Count; i++)
{
if (inbox.Items.UnRead)
{
txtMailList.Text += inbox.Items.Subject + System.Environment.NewLine;
}
}
ns.Logoff();
Marshal.ReleaseComObject(inbox);
Marshal.ReleaseComObject(ns);
Marshal.ReleaseComObject(app);
inbox = null;
ns = null;
app = null;