ZetCode

VBScript Outlook.Folder 对象

最后修改于 2025 年 4 月 9 日

VBScript 中的 Outlook.Folder 对象代表 Microsoft Outlook 层次结构中的一个文件夹。它是用于自动化的 Outlook 对象模型的一部分。文件夹可以包含邮件项、联系人、日历条目或其他文件夹。此对象提供了访问和管理文件夹内容的方法。

Outlook.Folder 支持与 Outlook 数据进行程序化交互。它支持诸如访问项、创建子文件夹和管理文件夹属性之类的操作。本教程将通过实际示例涵盖 Outlook.Folder,以演示其在自动化脚本中的用法。

Outlook.Folder 对象概述

Outlook.Folder 对象是通过 Outlook 应用程序对象层次结构获得的。它代表 Outlook 命名空间中的任何文件夹,包括默认文件夹和自定义文件夹。关键属性包括 NameItemsFolders 集合。

重要方法包括 CopyHereMoveToDelete。该对象支持用于监视文件夹更改的事件。理解此对象有助于有效自动化 Outlook 数据管理任务。

访问默认收件箱文件夹

此示例演示了如何访问 Outlook 中的默认收件箱文件夹。它展示了如何导航 Outlook 对象层次结构以到达收件箱。然后,脚本将显示有关该文件夹的基本信息。

access_inbox.vbs
Set outlookApp = CreateObject("Outlook.Application")
Set namespace = outlookApp.GetNamespace("MAPI")
Set inbox = namespace.GetDefaultFolder(6) ' 6 = olFolderInbox

WScript.Echo "Inbox Name: " & inbox.Name
WScript.Echo "Item Count: " & inbox.Items.Count

Set inbox = Nothing
Set namespace = Nothing
Set outlookApp = Nothing

该脚本创建了一个 Outlook 应用程序对象,并获取了 MAPI 命名空间。GetDefaultFolder(6) 用于检索收件箱文件夹。将显示文件夹的名称和项数。完成后务必释放对象以释放资源。

列出文件夹的子文件夹

此示例显示了如何枚举给定 Outlook 文件夹的所有子文件夹。它演示了如何访问 Folders 集合属性。将显示每个子文件夹的名称和项数。

list_subfolders.vbs
Set outlookApp = CreateObject("Outlook.Application")
Set namespace = outlookApp.GetNamespace("MAPI")
Set inbox = namespace.GetDefaultFolder(6) ' Inbox

For Each subfolder In inbox.Folders
    WScript.Echo "Subfolder: " & subfolder.Name
    WScript.Echo "  Items: " & subfolder.Items.Count
Next

Set inbox = Nothing
Set namespace = Nothing
Set outlookApp = Nothing

该脚本访问收件箱文件夹的 Folders 集合。它循环遍历每个子文件夹,显示其名称和项数。此技术适用于 Outlook 层次结构中任何具有子文件夹的文件夹。

创建新的子文件夹

此示例演示了如何在现有 Outlook 文件夹中创建新的子文件夹。它展示了 Folders.Add 方法的用法。该脚本在收件箱中创建了一个名为“已处理”的子文件夹。

create_subfolder.vbs
Set outlookApp = CreateObject("Outlook.Application")
Set namespace = outlookApp.GetNamespace("MAPI")
Set inbox = namespace.GetDefaultFolder(6) ' Inbox

Set newFolder = inbox.Folders.Add("Processed")
WScript.Echo "Created folder: " & newFolder.Name

Set newFolder = Nothing
Set inbox = Nothing
Set namespace = Nothing
Set outlookApp = Nothing

该脚本将一个名为“已处理”的新文件夹添加到收件箱。Add 方法返回新创建的 Folder 对象。对于文件夹已存在的情况,应添加错误处理。

在文件夹之间移动电子邮件

此示例演示了如何使用 MoveTo 方法在文件夹之间移动电子邮件项。它展示了如何在收件箱中查找特定电子邮件并将其移动到另一个文件夹。该脚本将未读电子邮件移动到“待处理”文件夹。

move_emails.vbs
Set outlookApp = CreateObject("Outlook.Application")
Set namespace = outlookApp.GetNamespace("MAPI")
Set inbox = namespace.GetDefaultFolder(6) ' Inbox

' Get or create target folder
On Error Resume Next
Set targetFolder = inbox.Folders("To Process")
If targetFolder Is Nothing Then
    Set targetFolder = inbox.Folders.Add("To Process")
End If
On Error GoTo 0

' Move unread emails
For Each item In inbox.Items
    If item.UnRead Then
        item.Move targetFolder
    End If
Next

WScript.Echo "Moved unread emails to: " & targetFolder.Name

Set targetFolder = Nothing
Set inbox = Nothing
Set namespace = Nothing
Set outlookApp = Nothing

该脚本首先确保目标文件夹存在。然后,它遍历所有收件箱项,将未读电子邮件移动到目标文件夹。在处理单个项时,使用 Move 方法而不是 MoveTo

处理文件夹项

此示例演示了如何处理文件夹中的所有项。它展示了如何访问电子邮件属性并基于这些属性执行操作。该脚本显示收件箱中每封电子邮件的发件人和主题。

process_items.vbs
Set outlookApp = CreateObject("Outlook.Application")
Set namespace = outlookApp.GetNamespace("MAPI")
Set inbox = namespace.GetDefaultFolder(6) ' Inbox

For Each item In inbox.Items
    If item.Class = 43 Then ' olMail = 43
        WScript.Echo "From: " & item.SenderName
        WScript.Echo "Subject: " & item.Subject
        WScript.Echo "Received: " & item.ReceivedTime
        WScript.Echo "---"
    End If
Next

Set inbox = Nothing
Set namespace = Nothing
Set outlookApp = Nothing

该脚本检查每个项的类,以确保它是一个邮件项(类 43)。对于每个邮件项,它将显示发件人、主题和接收时间。此模式可以扩展为根据各种标准处理项。

来源

Outlook.Folder 对象文档

在本文中,我们探讨了 VBScript 中的 Outlook.Folder 对象,涵盖了其用法和实际应用。从访问文件夹到处理项和管理文件夹结构,这些示例展示了强大的 Outlook 自动化功能。通过这些知识,您可以创建强大的脚本来管理 Outlook 数据。

作者

我叫 Jan Bodnar,是一名热情的程序员,拥有多年的编程经验。我自 2007 年以来一直撰写编程文章。到目前为止,我已撰写了 1400 多篇文章和 8 本电子书。我在编程教学方面有八年以上的经验。

列出所有 VBScript 教程