vbscript将同步问题文件夹电子邮件保存到文件夹

时间:2014-08-08 18:31:01

标签: vbscript outlook

背景:

我是几台Windows 7计算机的系统管理员。我们已从内部部署Exchange服务器切换到Office 365 Exchange Online。计算机使用Outlook 2013/2010连接到Exchange Online。所有客户端都使用完全缓存模式,因此每台计算机上都有一个完整的OST缓存文件。

因此,现在Outlook的“文件夹”视图中显示以下文件夹:同步问题,然后(子文件夹)冲突,本地故障和服务器故障。

我找不到远程管理或查看这些邮件的方法,因此我唯一的选择似乎是手动打开每个用户的Outlook并查看文件夹。我已经尝试设置规则来转发这些文件夹中显示的任何邮件给我,但我无法让他们处理这些文件夹中出现的新电子邮件。

我想编写一个脚本,将这些文件夹中的电子邮件保存到网络文件夹中,以便稍后查看。如果可能的话,我还希望脚本在网络上所有计算机名称的输入文本文件上运行。

我没有编写背景或知识的脚本。这是我到目前为止从网上拼凑而成的内容:

Dim OL, NmeSpace  
Set OL = CreateObject("Outlook.Application") 
Set NmeSpace = OL.GetNamespace("MAPI") 
Set Inbx = NmeSpace.GetDefaultFolder(olFolderSyncIssues) 
Set Fldr = Application.ActiveExplorer.CurrentFolder 
DirName = "C:\Emails\" 
For Each itm In Fldr.Items 
    ' Save email as a file. 
Next

提前感谢您提供的任何建议。我正在学习脚本,但我还没有编写我想要的脚本的知识。

1 个答案:

答案 0 :(得分:0)

以下是使用vbscript进行此操作的方法。现在它只执行oSyncFolder,因为我遗漏了其他两个文件夹,所以你可以自己写一些练习。

Dim oApp 
Dim ns 
Dim oSyncFolder
Dim oConflictFolder
Dim oSrvFailuresFolder
Dim dirName
dirName = "PathToFolder\"

Set oApp = CreateObject("Outlook.Application")
Set ns = oApp.GetNamespace("MAPI")

Set oSyncFolder = ns.GetDefaultFolder(20)'olFolderSyncIssues
Set oConflictFolder = ns.GetDefaultFolder(19)'olFolderConflicts
Set oSrvFailuresFolder = ns.GetDefaultFolder(22)'olFolderServerFailures

Dim iCounter
iCounter = oSyncFolder.Items.Count

    For iCounter = oSyncFolder.Items.Count To 0 Step -1
    Dim oItem
    Set oItem = oSyncFolder.Items.Item(iCounter)
        oItem.SaveAs dirName & "email" & CStr(iCounter) & ".msg"
        'uncomment line below to remove the item after it has been relocated.
        'oItem.Delete
    Next
Set oSyncFolder = Nothing
Set oConflictFolder = Nothing
Set oSrvFailuresFolder = Nothing
Set oApp = Nothing



msgbox "Finished"