访问Outlook msg附件的MailItem属性



我正在尝试使用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对象模型中所能做的最好的事情。你的选择是:

  1. 扩展的MAPI(可从c++或Delphi) -调用IAttach::OpenProperty(PR_ATTACH_DATA_OBJ, IID_IMessage, ...)

  2. Redemption(我是它的作者),它可以从任何语言中使用-它的RDOAttachment对象暴露了EmbeddedMsg属性。

最新更新