【问题标题】:Check exchange connectivity status检查交换连接状态
【发布时间】:2013-08-17 22:46:51
【问题描述】:

在继续执行我的脚本之前,我想检查配置了 Outlook 帐户的交换服务器是否可用。目前,我不检查,如果存在连接问题,脚本将永远挂在这一行

Set m_objNS = m_objOutlook.GetNamespace("MAPI")

并且看起来没有反应。

如果无法从 Outlook API 中执行此操作,是否可以检索交换服务器地址并对其进行 ping 操作或在 .GetNameSpace 函数上设置 20 秒超时?

更新:如果网络适配器出现问题(例如被禁用),代码可以访问命名空间对象。交换模式将始终为 400,直到出现授权代码的提示并且用户接受它。但是,如果存在真正的(非测试目的问题),例如交换服务器已关闭(目标主机无法访问),Outlook 会在“尝试连接”状态下空闲,并且您无法访问 .Session 对象或 MAPI。

一定有办法判断服务器是否宕机。

【问题讨论】:

    标签: vba outlook exchange-server


    【解决方案1】:

    Excel 可以返回带有一系列值的状态。您可以执行 If then else 以不同方式响应状态。值得注意的是,如果它正在“尝试连接”,它至少在 Outlook 2010 中报告它已断开连接 (300)。

    这是返回值的代码(其中的 msgbox 只是为了便于测试)。代码的 cmets 中的参考值,但也可在此处获得: http://msdn.microsoft.com/en-us/library/office/ff868474(v=office.14).aspx

    Sub CheckExchangeStatus()
    'olCachedConnectedDrizzle    olCachedConnectedFull   olCachedConnectedHeaders    olCachedDisconnected    olCachedOffline olDisconnected  olNoExchange    olOffline   olOnline
    '600                           700                      500                         400                     200             300             0               100         800
    
     Dim olApp As New Outlook.Application
     Dim olNameSpace As Outlook.NameSpace
    
     Set olNameSpace = olApp.GetNamespace("MAPI")
     Dim ExchangeStatus  As OlExchangeConnectionMode
    
     ExchangeStatus = olNameSpace.ExchangeConnectionMode
     MsgBox (ExchangeStatus)
    
    End Sub
    

    【讨论】:

      【解决方案2】:

      我的建议是在不知道的情况下不确定您的脚本会做什么。

      使用会话对象来确定帐户是否离线。

      假设 m_objOutlook 是 Outlook.Application 对象

      m_objOutlook.Session.Offline
      

      或使用 ExchangeConnectionMode

      objOutlook.Session.ExchangeConnectionMode 
      

      并检查以下其中一项

                  olOffline
                  olNoExchange
                  olDisconnected
                  olCachedOffline
                  olCachedDisconnected
      

      【讨论】:

      • 即使存在连接问题,会话也会显示为“在线”,只有在 Outlook 中指定“离线工作”时才会显示为离线。
      • 正如我在帖子更新中所说,如果连接状态为“正在尝试连接”,脚本将在 objOutlook.Session 处永远挂起
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-06-26
      • 2017-03-12
      • 1970-01-01
      • 2014-08-18
      • 2019-03-24
      • 2013-12-22
      • 2015-09-21
      相关资源
      最近更新 更多