Vba VB获取Outlook默认邮箱

Vba VB获取Outlook默认邮箱,vba,email,vbscript,outlook,outlook-2007,Vba,Email,Vbscript,Outlook,Outlook 2007,我需要一些vb的帮助。我需要一个Outlook2007脚本,返回默认数据文件的pst名称。需要明确的是,用户接收电子邮件时的默认邮箱将是exchange帐户。但是,一些用户使用他们的个人文件夹作为默认文件夹,这样当电子邮件到达时,邮件会自动转到指定的个人文件夹。因此,我的目标是将结果输出到用户默认使用的exchange帐户或个人文件夹。如果是个人文件夹,我需要pst的位置/路径。 我尝试使用getdefaultfolder,但它返回“收件箱” objNS.GetDefaultFolder(olF

我需要一些vb的帮助。我需要一个Outlook2007脚本,返回默认数据文件的pst名称。需要明确的是,用户接收电子邮件时的默认邮箱将是exchange帐户。但是,一些用户使用他们的个人文件夹作为默认文件夹,这样当电子邮件到达时,邮件会自动转到指定的个人文件夹。因此,我的目标是将结果输出到用户默认使用的exchange帐户或个人文件夹。如果是个人文件夹,我需要pst的位置/路径。 我尝试使用getdefaultfolder,但它返回“收件箱”

objNS.GetDefaultFolder(olFolderInbox)

Outlook对象模型不公开PST路径。您可以使用扩展的MAPI C++或Delphi或任何语言来解析PST路径。有关读取RDOPstStore.PstPath属性的示例,请参见下文:

  skPstAnsi = 1
  skPstUnicode = 2
  skPrimaryExchangeMailbox = 3
  skDelegateExchangeMailbox = 4
  skPublicFolders = 5
  set Session = CreateObject("Redemption.RDOSession")
  Session.MAPIOBJECT = Application.Session.MAPIOBJECT
  for each Store in Session.Stores
    Debug.Print Store.Name
    if (Store.StoreKind = skPstAnsi) or (Store.StoreKind = skPstUnicode) Then
      Debug.Print Store.PstPath
    ElseIf (Store.StoreKind = skPrimaryExchangeMailbox) or (Store.StoreKind = skDelegateExchangeMailbox) or (Store.StoreKind = skPublicFolders) Then
      Debug.Print Store.ServerDN
    End If
  next

谢谢你的建议。但是我相信我需要安装“redemption”来让这个脚本工作。但我负担不起在每个用户的pc上安装它。实际上我使用的是这个网站上的脚本_http://blogs.technet.com/b/messaging_and_beyond/archive/2012/05/10/scripting-listing-pst-files-in-an-outlook-profile.aspx. 它成功地完成了列出pst的工作。但我真正需要的是让我知道哪个pst是“默认”个人文件夹,或者它仍然以默认身份使用exchange帐户没有默认pst文件。配置文件中有一个默认存储,不管它是Exchange、PST等还是其他辅助存储。您是否正在查找特定POP3/SMTP帐户将电子邮件发送到的位置?是。。我不知道确切的术语是什么。可以在帐户设置-数据文件中手动更改。然后我们设置默认设置的“文件名”。我想从vb脚本中获取默认设置的pst或exchange的结果。如果将特定数据文件设置为默认存储,则对Namespace.GetDefaultFolder的所有调用都将从该存储返回文件夹。当我使用GetDefaultFolderolFolderInbox时,无论exchange还是personal folder,它都将返回收件箱。那么,它如何有助于确定pst名称呢?