我想将 Outlook 收件箱中的邮件保留一段时间,以便它们仍然可见。一段时间后(例如 14 天),我想将它们移至另一个文件夹storage
。
能通过规则来实现吗?
笔记:
- 到目前为止,我制定了一条规则将副本移至文件夹
storage
。但我错过了 14 天后删除的部分。 - 在 gmail 中,我可以通过应用程序脚本来实现这一点,脚本每天都会运行。此外,由于 gmail 使用标签而不是文件夹,我不必移动副本,只需将标签添加到同一封电子邮件中即可。14 天后,我的脚本从电子邮件中
storage
删除了标签。Inbox
编辑:
根据@squillman的评论,使用VBA可能可以实现。我想这可能是一个有趣的附加组件。
答案1
您可以自动执行此操作,但仅限于存档文件夹。此选项称为“自动存档”,并在文章中有完整描述 如何在 Outlook 中移动超过 n 天/周/月的项目?
要完全回答您的问题,需要 VBA 宏。您可以在文章中找到此类 VBA 宏 宏来移动过期的电子邮件,用于 MAPI 电子邮件服务器。宏本身引用如下,但本文包含几个变体:
- VBA 宏检查默认收件箱中超过 7 天的电子邮件并将其移动到收件箱的子文件夹中
Old
。 - 将消息移动到新数据文件的宏。
- 用于移动已回复或转发的消息的宏。
文章最后解释了如何使用宏。
下面引用了上述第一种变体。您需要将 更改为7
,14
并且可以更改Old
子文件夹的名称。
Sub MoveAgedMail()
Dim objOutlook As Outlook.Application
Dim objNamespace As Outlook.NameSpace
Dim objSourceFolder As Outlook.MAPIFolder
Dim objDestFolder As Outlook.MAPIFolder
Dim objVariant As Variant
Dim lngMovedItems As Long
Dim intCount As Integer
Dim intDateDiff As Integer
Dim strDestFolder As String
Set objOutlook = Application
Set objNamespace = objOutlook.GetNamespace("MAPI")
Set objSourceFolder = objNamespace.GetDefaultFolder(olFolderInbox)
' use a subfolder under Inbox
Set objDestFolder = objSourceFolder.Folders("Old")
For intCount = objSourceFolder.Items.Count To 1 Step -1
Set objVariant = objSourceFolder.Items.Item(intCount)
DoEvents
If objVariant.Class = olMail Then
intDateDiff = DateDiff("d", objVariant.SentOn, Now)
' I'm using 7 days, adjust as needed.
If intDateDiff > 7 Then
objVariant.Move objDestFolder
'count the # of items moved
lngMovedItems = lngMovedItems + 1
End If
End If
Next
' Display the number of items that were moved.
MsgBox "Moved " & lngMovedItems & " messages(s)."
Set objDestFolder = Nothing
End Sub
答案2
答案3
据我所知,您提到的两个功能只能实现一个。要将电子邮件移动到文件夹,您可以像您所做的那样创建规则。要将电子邮件在 14 天后移动,正如 harrymc 提到的,我们可以尝试自动存档。