在适用于 2003、2007 和 2010 年的 Outlook 上执行编程式发送/接收

发布于 2024-10-17 21:10:10 字数 418 浏览 3 评论 0原文

我正在尝试编写一些支持 Outlook 2003、2007 和 2010 的基本 Outlook 代码。我正在使用 Outlook 2010 PIA。除了导致 Outlook 执行发送/接收的方法之外,一切正常。我尝试了几个选项:

  1. 调用 Namespace.SendAndReceive 方法(适用于 Outlook 2007 和 2010,在 Outlook 2003 上失败并出现 AccessViolationException)。
  2. 迭代 Namespace.SyncObjects 并调用其启动方法(适用于 Outlook 2003 和 2007,但在 Outlook 2010 上失败,当我尝试在应用程序对象上调用 GetNamespace("MAPI") 时,RPC 服务器不可用)

有人可以提出一种方法吗?应该在所有版本上一致工作?

I am trying to write some basic Outlook code that should support Outlook 2003, 2007 and 2010. I am working with Outlook 2010 PIAs. Everything works except a method that should cause Outlook to perform Send/Receive. I have tried a couple of options:

  1. Call Namespace.SendAndReceive method (works on Outlook 2007 and 2010, fails on Outlook 2003 with AccessViolationException).
  2. Iterate through Namespace.SyncObjects and calling their start method (works in Outlook 2003 and 2007 and fails on Outlook 2010 with RPC server is not available when I try to call GetNamespace("MAPI") on my application object)

Can someone propose a method that should work consistently on all versions?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

笑着哭最痛 2024-10-24 21:10:10

我相信 SendAndReceive() 是在 2007 年作为一种便捷方法添加的,因此正如您发现的那样,它在 2003 年不起作用。根据 2010 文档,您应该仍然可以使用 SyncObjects 集合并仍然调用 Start()。您的 2010 年安装是否有可能包含错误的邮件/新闻/其他配置文件? Start() 是否在特定 SyncObject 上失败?

您可能已经想到的另一个解决方案是在 2003 版本中使用 SyncObjects,在未来版本中使用 SendAndReceive()

I believe that SendAndReceive() was added as a convenience method in 2007 so that won't work in 2003 as you found out. According to the 2010 documentation you should still be able to use SyncObjects collection and still call Start(). Is it possible that you're 2010 installation has a bad mail/news/whatever profile? Is Start() failing on a specific SyncObject?

The other solution which you probably already thought of is to use SyncObjects for 2003 and SendAndReceive() for future versions.

一袭水袖舞倾城 2024-10-24 21:10:10
//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();
}
//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();
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文