用户可能希望将电子邮件保存在硬盘上,以便独立于 Outlook 查看它们或与其他人共享。 在本文中,我们将介绍如何通过 VBA 自动执行此操作。
从 Outlook 导出电子邮件
并非每个互联网用户都将 Outlook 用作电子邮件客户端,并且可能正在使用备用客户端。 也可能存在需要与某人共享电子邮件而不发送实际电子邮件的情况。 同样出于文档和审查目的,电子邮件通常作为证据提供。 对于此类情况,Outlook 提供了一种将电子邮件独立导出为 .msg 或 .html 文件的方法。 以下 VBA 脚本将每封收到的电子邮件自动保存到硬盘驱动器上的预定义位置,而无需用户以 html 格式进行干预。 保存后,无需电子邮件客户端即可在任何 Internet 浏览器中查看电子邮件。
展望 VBA 脚本
下面是完整的 Outlook VBA 脚本:
Private WithEvents Items As Outlook.Items
Private Count As Integer
Private Sub Application_Startup()
Dim objApp As Outlook.Application
Dim objNameSpace As Outlook.NameSpace
' Get the items in the Inbox folder
Set objApp = Outlook.Application
Set objNameSpace = objApp.GetNamespace("MAPI")
Set Items = objNameSpace.GetDefaultFolder(olFolderInbox).Items
' Initialize count
Count = 1
End Sub
Private Sub Items_ItemAdd(ByVal objItem As Object)
On Error GoTo ShowError
Dim objMail As Outlook.MailItem
' Check if the item is a mail. If yes, then save it as a HTML file and update Count
If TypeName(objItem) = "MailItem" Then
Set objMail = objItem
objMail.SaveAs "C:\MyEmails\MyEmail" & CStr(Count), olHTML
Count = Count + 1
End If
Exit Sub
ShowError:
MsgBox Err.Number & " - " & Err.Description
End Sub
如何运行脚本

理解脚本
在脚本中,“Items_ItemAdd”例程会在收到收件箱文件夹中的邮件时触发。“TypeName”函数的作用是确保该例程仅在邮件为电子邮件时才会执行,而不会执行其他类型的Outlook对象。如果您将邮件从其他文件夹(例如“已发送邮件”)拖到收件箱,该例程仍然会正常工作。需要注意的是,“Items_ItemAdd”例程仅在邮件添加到主收件箱文件夹时才会触发。如果主收件箱文件夹内有嵌套文件夹,则向其中任何一个文件夹添加邮件时,代码将无法运行。要使其适用于其他文件夹,需要在“Application_Startup”例程中将“Items_ItemAdd”例程连接到相应的文件夹。在上述脚本中,olHTML格式可以替换为olMSG、olRTF、olDoc或olTxt格式。默认的邮件保存命名格式为“MyEmail##”,其中##是从1开始递增的编号。例如,运行此脚本后收到的第十二封邮件将被保存为“MyEmail12”。
Outlook 故障后的数据恢复
Outlook 崩溃并且用户最终丢失大量数据的情况并不少见。 从此类情况中恢复可能是一项非常艰巨且耗时的任务。 为了让你的生活在这种情况下更轻松,你可以使用 展望数据恢复 用于高效且无错误恢复的工具。
作者简介:
Mary Underwood 是一位数据恢复专家 DataNumen, Inc.,它是数据恢复技术领域的世界领先者,包括 dwg恢复 和 rar 恢复软件产品。 欲了解更多信息,请访问 datanumen.com