VB 从 Javascript 调用的脚本 - 无法获取 Outlook 发件人地址

VB Script called from Javascript - can't get Outlook Sender address

我正在使用 IE 11(是的,必须是该浏览器)从内部网页调用 VBS 函数。 该函数处理一个 Outlook 邮箱,并且部分工作:我可以 运行 在邮件列表中找到主题和正文,但我需要发件人的电子邮件地址。 当我 运行 与 Outlook 宏类似的代码时,我可以通过多种方式获得它,但是 none 它们在 VBS 中工作 - 当我尝试获得任何感兴趣的东西时,脚本只是挂起(没有错误消息) - 查看功能,以及我尝试评论的各种内容。 非常感谢收到关于我哪里出错的任何指示....

    Function readEmails(mailbox)
    Dim iCt  
        Set objOutlook = CreateObject("Outlook.Application")
        Set NS = objOutlook.GetNamespace("MAPI")
        Set olFolder = NS.Folders(mailbox)
        Set olFolInbox = olFolder.Folders("Inbox")
    
        iCt = 0
        For iCt =1 to olFolInbox.Items.Count 
            set olMessage=olFolInbox.Items(iCt)
                msgbox(ict & "-" & olMessage.Subject )
                msgbox("SenderEmailType=" & olMessage.SenderEmailType)
                msgbox("SenderEmailAddress=" & olMessage.SenderEmailAddress)    'hangs
                'set sn=olMessage.SenderName 'hangs
                set sUser=olMessage.Sender
                'set sn=sUser.Name 'hangs
                'msgbox(sUser) 'hangs
                'set sExUser=sUser.GetExchangeUser ' hangs
            End If
        Next 
        readEmails=sReturn
    End Function

当您从外部宏自动执行 Outlook 时,似乎出现了安全问题 - 它可能是安全提示或代码中的异常。它的显示方式实际上取决于 Outlook 版本(其内部实现)。为避免在处理 OOM 时出现安全问题,您可以使用以下方法:

  1. 使用不会在 OOM 中触发安全问题的低级 API。 Outlook 建立在 Extended MAPI 之上,与 OOM 不同,它不会触发安全问题。您也可以考虑在这个低级别 API 周围使用任何包装器,例如 Redemption。
  2. 使用专为在 OOM 中关闭和打开安全检查而设计的第三方组件,有关详细信息,请参阅Outlook Security Manager
  3. 如果系统上安装了任何最新的防病毒软件,您可以创建一个组策略来防止显示安全提示,或者只是关闭这些警告(不推荐这样做)。

用户获得安全性 prompts/exceptions 因为 Outlook 是通过以下方式之一在客户端计算机上配置的:

  • 使用默认的 Outlook 安全设置(即没有设置组策略)
  • 使用组策略定义的安全设置,但未应用编程访问策略
  • 使用由组策略定义的安全设置,该设置设置为在防病毒软件处于非活动状态或已过期时发出警告

Security Behavior of the Outlook Object Model 文章中阅读更多相关信息。