.net 对2003、2007和2010年适用的Outlook执行编程发送/接收
我正在尝试编写一些基本的Outlook代码,这些代码应该支持Outlook 2003、2007和2010。我正在使用Outlook 2010 PIAs。除了一个会导致Outlook执行发送/接收的方法外,其他方法都可以正常工作。我尝试了几种选择:.net 对2003、2007和2010年适用的Outlook执行编程发送/接收,.net,outlook,.net,Outlook,我正在尝试编写一些基本的Outlook代码,这些代码应该支持Outlook 2003、2007和2010。我正在使用Outlook 2010 PIAs。除了一个会导致Outlook执行发送/接收的方法外,其他方法都可以正常工作。我尝试了几种选择: 调用Namespace.SendAndReceive方法(适用于Outlook 2007和2010,在Outlook 2003上失败,AccessViolationException) 遍历Namespace.SyncObjects并调用其start方
有人能提出一种在所有版本上都能一致工作的方法吗?我相信
sendandereceive()
是在2007年作为一种方便的方法添加的,所以正如您所发现的那样,这种方法在2003年不起作用。根据,您应该仍然能够使用SyncObjects
集合并调用Start()
。是否有可能您的2010安装有一个坏邮件/新闻/任何配置文件?Start()
是否在特定的SyncObject
上失败
您可能已经想到的另一个解决方案是在2003年使用
SyncObjects
,在将来的版本中使用sendandereceive()
。我相信sendandereceive()
是在2007年作为一种方便的方法添加的,因此,正如您所发现的,这种方法在2003年不起作用。根据,您应该仍然能够使用SyncObjects
集合并调用Start()
。是否有可能您的2010安装有一个坏邮件/新闻/任何配置文件?Start()
是否在特定的SyncObject
上失败
//First Register the Sync Event
if (oApp.Session.SyncObjects.Count > 0)
{
_syncObj = oApp.Session.SyncObjects[1];
_syncObj.SyncEnd += new Outlook.SyncObjectEvents_SyncEndEventHandler(_syncObj_SyncEnd);
_syncObj.Start();
}
void _syncObj_SyncEnd()
{
_syncObj.Stop();
}
您可能已经想到的另一个解决方案是在2003年使用
SyncObjects
,在将来的版本中使用sendandereceive()
。谢谢您的回复。我不认为我的安装有问题,因为我在一次新的安装之后已经做了几次了。我考虑过第二个选项,但它很难看,我宁愿不在我的代码上执行硬编码测试。我将尝试调查哪个项目失败,稍后将其添加到我的问题中。我已编辑了我的问题。当我尝试在Outlook 2010的应用程序类上调用GetNamespace(“MAPI”)时,引发RPC服务器不可用异常。发现当我尝试在测试应用程序外部执行发送和接收时,该异常有效。因此,我推断我的代码失败是由于我的应用程序上的另一个错误@谢谢你的回复。谢谢你的回复。我不认为我的安装有问题,因为我在一次新的安装之后已经做了几次了。我考虑过第二个选项,但它很难看,我宁愿不在我的代码上执行硬编码测试。我将尝试调查哪个项目失败,稍后将其添加到我的问题中。我已编辑了我的问题。当我尝试在Outlook 2010的应用程序类上调用GetNamespace(“MAPI”)时,引发RPC服务器不可用异常。发现当我尝试在测试应用程序外部执行发送和接收时,该异常有效。因此,我推断我的代码失败是由于我的应用程序上的另一个错误@克里斯:谢谢你的回复。
//First Register the Sync Event
if (oApp.Session.SyncObjects.Count > 0)
{
_syncObj = oApp.Session.SyncObjects[1];
_syncObj.SyncEnd += new Outlook.SyncObjectEvents_SyncEndEventHandler(_syncObj_SyncEnd);
_syncObj.Start();
}
void _syncObj_SyncEnd()
{
_syncObj.Stop();
}