我正在尝试使用vbscript从数百个旧Exchange Journal Outlook PST文件中提取邮件项目详细信息。PST档案中的所有项目都由一个"信封"组成。带有.msg附件的邮件项,该附件是我要捕获其属性的实际电子邮件。
我可以访问附件对象,但不能提取下面列出的MailItem属性和集合,可能是因为附件不是作为MailItem打开的。我已经尝试使用PropertyAccessor对象,但我不能从它得到任何结果。
我想到的唯一解决方法是使用SaveAsFile方法将每个附件保存到file,然后使用CreateItemFromTemplate打开保存的文件,然后提供对对象的Mail Item属性的完全访问。但是,由于磁盘操作造成的延迟过大。我的基本"变通方法"返回"objMsg"MailItem对象是:
Set objOL=WScript.CreateObject("Outlook.Application")
set objNS=objOL.GetNameSpace("MAPI")
Set objPST = objNS.Folders(strPSTname).Folders("Inbox").Items
Set objItem = objPST.Items(1)
objItem.Attachments(1).SaveAsFile(conTempPath)
Set objMsg = objOL.CreateItemFromTemplate(conTempPath)
有没有人知道访问.msg附件的Mail Item属性的更好的方法?
objItem.Class
objItem.ReceivedTime
objItem.SenderEmailAddress
objItem.SenderName
objItem.SentOnBehalfOfName
objItem.Subject
objItem.Attachments
objItem.Recipients
objItem.To
objItem.Cc
objItem.Bcc
这是您在Outlook对象模型中所能做的最好的事情。你的选择是:
-
扩展的MAPI(可从c++或Delphi) -调用
IAttach::OpenProperty(PR_ATTACH_DATA_OBJ, IID_IMessage, ...)
-
Redemption(我是它的作者),它可以从任何语言中使用-它的RDOAttachment对象暴露了
EmbeddedMsg
属性。