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