【问题标题】:VB Script called from Javascript - can't get Outlook Sender address从 Javascript 调用的 VB 脚本 - 无法获取 Outlook 发件人地址
【发布时间】:2021-08-18 00:31:56
【问题描述】:

我正在使用 IE 11 从 Intranet 页面调用 VBS 函数(是的,它必须是那个浏览器)。 该函数处理一个 Outlook 邮箱,并且部分工作:我可以运行邮件列表并找到主题和正文,但我需要发件人的电子邮件地址。 当我将类似的代码作为 Outlook 宏运行时,我可以通过各种方式得到它,但它们都不能在 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

【问题讨论】:

  • 您可以先尝试检查SenderEmailAddress 是否有使用Len(SenderEmailAddress & "") > 0 的值。
  • 谢谢 - 我添加了 msgbox("Len="&Len(olMessage.SenderEmailAddress & "")) - 有和没有 & "" - 当它到达那条线时它再次挂起,什么都没有显示
  • 问题是Items collection 可以处理multiple types of outlook objects,因此在尝试读取属性之前,您可能需要先检查您正在处理的是MailItem。有关您可以修改的一些 VBA 示例,请参阅 Check for the senderEmailAddress
  • 谢谢,user692942,您的观点总体上是有效的,但我碰巧知道我在这里处理所有 MailItems。相同的代码在 Outlook 宏中运行良好,但在从 HTML/Javascript 页面调用的 VB 脚本中则不行。不管怎样,我会看看你的例子,看看它是否能让我有所收获。

标签: outlook vbscript


【解决方案1】:

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

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

用户会收到安全提示/异常,因为 Outlook 是通过以下方式之一在客户端计算机上配置的:

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

Security Behavior of the Outlook Object Model 文章中了解更多信息。

【讨论】:

  • 谢谢,尤金 - 我想你已经找到了问题所在。鉴于公司限制,我不太可能更改安全设置,但我可以考虑以不同的方式实现我的目标。
猜你喜欢
  • 2014-03-01
  • 2018-05-13
  • 2018-09-08
  • 2014-03-03
  • 1970-01-01
  • 1970-01-01
  • 2022-07-26
  • 2021-03-14
  • 1970-01-01
相关资源
最近更新 更多