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 时出现安全问题,您可以使用以下方法:
- 使用不会在 OOM 中触发安全问题的低级 API。 Outlook 建立在 Extended MAPI 之上,与 OOM 不同,它不会触发安全问题。您也可以考虑在这个低级别 API 周围使用任何包装器,例如 Redemption。
- 使用专为在 OOM 中关闭和打开安全检查而设计的第三方组件,有关详细信息,请参阅Outlook Security Manager。
- 如果系统上安装了任何最新的防病毒软件,您可以创建一个组策略来防止显示安全提示,或者只是关闭这些警告(不推荐这样做)。
用户获得安全性 prompts/exceptions 因为 Outlook 是通过以下方式之一在客户端计算机上配置的:
- 使用默认的 Outlook 安全设置(即没有设置组策略)
- 使用组策略定义的安全设置,但未应用编程访问策略
- 使用由组策略定义的安全设置,该设置设置为在防病毒软件处于非活动状态或已过期时发出警告
在 Security Behavior of the Outlook Object Model 文章中阅读更多相关信息。
我正在使用 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 时出现安全问题,您可以使用以下方法:
- 使用不会在 OOM 中触发安全问题的低级 API。 Outlook 建立在 Extended MAPI 之上,与 OOM 不同,它不会触发安全问题。您也可以考虑在这个低级别 API 周围使用任何包装器,例如 Redemption。
- 使用专为在 OOM 中关闭和打开安全检查而设计的第三方组件,有关详细信息,请参阅Outlook Security Manager。
- 如果系统上安装了任何最新的防病毒软件,您可以创建一个组策略来防止显示安全提示,或者只是关闭这些警告(不推荐这样做)。
用户获得安全性 prompts/exceptions 因为 Outlook 是通过以下方式之一在客户端计算机上配置的:
- 使用默认的 Outlook 安全设置(即没有设置组策略)
- 使用组策略定义的安全设置,但未应用编程访问策略
- 使用由组策略定义的安全设置,该设置设置为在防病毒软件处于非活动状态或已过期时发出警告
在 Security Behavior of the Outlook Object Model 文章中阅读更多相关信息。