我正在尝试编写一些c#代码与Outlook 2010进行交互。我目前正在使用this example from Microsoft。
我的代码如下:
using System;
using System.Text; // StringBuilder
using System.Diagnostics; // Debug
using System.Linq;
using System.Reflection;
using System.Runtime.InteropServices;
using Outlook = Microsoft.Office.Interop.Outlook;
namespace DirectReports
{
public class Program
{
private void GetManagerDirectReports()
{
Outlook.AddressEntry currentUser = Application.Session.CurrentUser.AddressEntry;
//Outlook.AddressEntry currentUser = Outlook.Application.Session.CurrentUser.AddressEntry;
if (currentUser.Type == "EX")
{
Outlook.ExchangeUser manager = currentUser.GetExchangeUser().GetExchangeUserManager();
if (manager != null)
{
Outlook.AddressEntries addrEntries =
manager.GetDirectReports();
if (addrEntries != null)
{
foreach (Outlook.AddressEntry addrEntry
in addrEntries)
{
Outlook.ExchangeUser exchUser = addrEntry.GetExchangeUser();
StringBuilder sb = new StringBuilder();
sb.AppendLine("Name: " + exchUser.Name);
sb.AppendLine("Title: " + exchUser.JobTitle);
sb.AppendLine("Department: " + exchUser.Department);
sb.AppendLine("Location: " + exchUser.OfficeLocation);
Debug.WriteLine(sb.ToString());
}
}
}
}
}
}
}
Microsoft示例提到“如果使用Visual Studio测试此代码示例,则必须首先添加对Microsoft Outlook 15.0对象库组件的引用”。我正在使用Visual Studio Express 2013 for Windows Desktop。我没有看到15.0版本的对象库,而是添加了14.0版本(我觉得它对于Outlook 2010来说是正确的):
当我尝试构建时,出现以下错误:
The name 'Application' does not exist in the current context
我读了几个引用,表明Application
应该是上述对象库的一部分,但显然它不能在这里工作。有人可以建议我做错了吗?
答案 0 :(得分:6)
您可以创建新的Application
对象:
var appOutlook = new Microsoft.Office.Interop.Outlook.Application();
然后将其用作:
Outlook.AddressEntry currentUser = appOutlook.Session.CurrentUser.AddressEntry;
答案 1 :(得分:1)
您使用的是错误的项目。 在Visual Studio中创建新项目时,请使用Outlook加载项模板。 (模板 - > Visual C# - > Office - > Outlook)。
在这段代码中,他们的Application.Session会像你期望的那样工作。
或者您应该像这样创建一个新的应用程序对象。 var outlook = new Microsoft.Office.Interop.Outlook.Application(); 并使用outlook.Session。
答案 2 :(得分:-1)
在文件开头添加以下行:
using Microsoft.Office.Interop.Outlook;
或者只是使用Outlook别名预先添加任何Outlook对象声明。
您可能会发现C# app automates Outlook (CSAutomateOutlook)示例项目很有帮助。