如何在 Silverlight 4 应用程序中获取 Outlook 2003 数据
是否可以将 Outlook 2003 自动化与 Silverlight 4 结合使用?或者也许有一些不同的方法可以在 Silverlight 应用程序中使用 Outlook 2003 MAPI?
我正在使用 Silverlight 4,并尝试以这种方式与 Outlook 交互:
dynamic outlook = AutomationFactory.GetObject("Outlook.Application");
对于 Outlook 2007/2010,一切正常。
但是,当我尝试使用 Outlook 2003 中的动态实例的任何字段(例如 Outlook.Session)时,我得到了 NotSupportedException。这只是 Outlook 2003 的问题。
我发现文章 http://msdn.microsoft.com /en-us/library/aa159619%28office.11%29.aspx 但对于 Silverlight 应用程序来说没有用(无法直接引用 Office 程序集或 COM)。
Type.GetTypeFromProgID
也没用,Silverlight 不支持它。
Is it possible to use Automation for Outlook 2003 with Silverlight 4? Or maybe there are some different way to use Outlook 2003 MAPI in Silverlight application?
I'm using Silverlight 4 and I'm trying interact with Outlook in this way:
dynamic outlook = AutomationFactory.GetObject("Outlook.Application");
For Outlook 2007/2010 all works fine.
But when I try use any field of dynamic instance (for example outlook.Session) from Outlook 2003 then I've get NotSupportedException. It's only Outlook 2003 problem.
I found article http://msdn.microsoft.com/en-us/library/aa159619%28office.11%29.aspx but it's useless for Silverlight application (impossible to get reference to office assembly or COM directly).
Type.GetTypeFromProgID
is useless too, Silverlight doesn't support it.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我终于找到答案了。
大多数操作都可以使用标准 Outlook 2003 对象模型来执行。 这篇 Microsoft 文章中描述了所有这些操作。
文章中的示例与 Silverlight 代码之间的主要区别 - 我们无法引用 Interop Outlook 程序集,因此我们需要使用动态。
因此,从联系人列表或所有收件箱电子邮件中获取所有联系人非常容易(请参阅文章)。最困难的部分是获取已创建用户帐户的列表。 Outlook 2003 对象模型提供了仅获取一个(默认)帐户的可能性:
但它仍然不适合我。非常遗憾的是,Outlook 2003 对象模型中没有 Session.Accounts 属性。所以我发现只有一种棘手的方法来获取帐户列表。
主要技巧是使用 AutomationFactory.CreateObject("WScript.Shell")。现在可以使用 RegRead 方法直接从注册表获取帐户信息。顺便说一句,此代码甚至适用于 Outlook 2007/2010。对我来说,最好的方式是静默收集帐户(无需在数据收集之前启动 Outlook)。
I’ve finally found an answer.
Most of actions can be performed using standard Outlook 2003 object model. All these actions described in this Microsoft article.
Main difference between examples in article and Silverlight code – we can’t refer Interop Outlook assembly, so we need to use dynamics.
So it’s pretty easy to get all contacts from contact list or all inbox emails (see article). Most difficult part is obtaining list of created user’s accounts. Outlook 2003 object model provide possibility to obtain only one (default) account:
But it’s still doesn’t suitable for me. It’s very sad, but there is no Session.Accounts property in Outlook 2003 object model. So I’ve found only one tricky way to obtain list of accounts.
Main trick is in use of AutomationFactory.CreateObject("WScript.Shell"). Now it’s possible to get account information directly from registry using RegRead method. By the way this code works well even for Outlook 2007/2010. And as for me it’s most preferable way if accounts should be collected silently (there is no need to launch Outlook before data collecting).