【问题标题】:Outlook Interop - MailItem.Sender is Hanging\FreezeOutlook 互操作 - MailItem.Sender 挂起\冻结
【发布时间】:2015-09-19 06:34:54
【问题描述】:

我使用下面的 msdn 链接中的代码,它在我的系统中运行良好,可以获取发件人的电子邮件地址。但是,当我将相同的代码部署到我们的开发服务器之一时,下面的代码行会无限期地挂起\冻结而没有任何响应。跟踪后,我发现如果访问了发送者对象的属性,它将永远挂起。缓存交换模式已“打开”邮箱并在 Outlook 2010 中运行。我还手动从 Outlook 下载了通讯录,但没有帮助。我相信这不是代码问题。有人可以帮忙吗?

https://msdn.microsoft.com/en-us/library/office/ff184624.aspx

sender.AddressEntryUserType == Outlook.OlAddressEntryUserType。 olExchangeUserAddressEntry ||发件人.AddressEntryUserType == Outlook.OlAddressEntryUserType。 olExchangeRemoteUserAddressEntry

【问题讨论】:

  • 您能否在同一台机器上的 Outlook 中手动双击该项目的发件人并查看详细信息?
  • @Dmitry 是的,我可以看到这些细节。
  • 在同一台机器上,对吧?
  • @DmitryStreblechenko 是的
  • 您是作为 GUI 应用还是服务运行?

标签: c# outlook office-interop com-interop outlook-2010


【解决方案1】:

Microsoft 目前不推荐也不支持从任何无人值守的非交互式客户端应用程序或组件(包括 ASP、ASP.NET、DCOM 和 NT 服务)自动化 Microsoft Office 应用程序,因为 Office在此环境中运行 Office 时可能会出现不稳定的行为和/或死锁。

如果您要构建在服务器端上下文中运行的解决方案,您应该尝试使用已确保无人值守执行安全的组件。或者,您应该尝试找到允许至少部分代码在客户端运行的替代方案。如果您使用来自服务器端解决方案的 Office 应用程序,该应用程序将缺少许多成功运行所需的功能。此外,您将承担整体解决方案稳定性的风险。在Considerations for server-side Automation of Office 文章中了解更多信息。

Outlook 所基于的低级 API 支持从服务运行代码。您可以使用任何语言来实现任务(C# 和 VB.NET)。但是微软官方并不支持这样的解决方案/代码。如果您遇到任何问题,您将独自一人,但托管代码可以作为一种魅力。

另见EWS Managed API, EWS, and web services in Exchange

【讨论】:

  • 感谢 Eugene 提供来自 MSDN 的链接,它很有用。我决定继续兑换,因为用户登录需要在交换服务器中具有特殊访问权限才能使用 EWS api。
【解决方案2】:

您不能在服务中使用 Outlook。不能在服务中使用任何 Office 应用(包括 Outlook)。

您的选择是扩展 MAPI(C++ 或 Delphi)、Redemption(它封装了扩展 MAPI,可用于任何语言)或 EWS

【讨论】:

  • 但是在我的本地 IIS 7 中运行的相同服务(它是 WCF Web 服务)如何从我的 Outlook 邮箱中读取电子邮件?仅将 office Outlook interop api 用于本地服务而不用于 Windows Server 2012 类型的环境是否有限制?
  • 这就是在服务中使用 Office 应用程序的问题 - 它们在您的开发环境中运行良好,但在最不合适的时刻以非常惊人的方式失败,当您向老板演示代码时或之后在生产中部署。
  • 我可以访问 MailItem 中的附件并成功保存在开发服务器中。但是 MailItem 中的其他属性很少,例如 MailItem.Recipients、MailItem.Sender、MailItem.SentOn 等。如果触摸会导致整个事情无限期地挂起。
  • 在服务中运行 Outlook 时,没有任何原因导致失败。不要试图让它工作,它以后仍然会失败。
  • 我用 redemption 替换了所有的互操作 api 调用,它在开发服务器中运行良好。谢谢!
猜你喜欢
  • 2012-05-06
  • 2011-02-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多