如何将 Outlook 电子邮件消息转换成文本文件?

来源:百度文库 编辑:神马文学网 时间:2024/03/28 21:17:14
问:
您好,脚本专家!如何将 Outlook 电子邮件消息转换成文本文件?
-- MW
答:
您好,MW。您知道是什么将脚本专家逼得发疯了吗?(我们的意思是除了别的脚本专家以外的其他人。)这便是:在他们开始制造借口之前几乎连招呼都不打的人:
“对不起,我对此所做的工作如此糟糕,不过 …。”
“我意识到我应今天完成这件事,但是 …。”
“我知道我本应该停下来将您从着火的大楼中拖出,但是 …。”
脚本专家不相信借口:您要么能做,要么不能。无需多言。
另一方面,脚本专家确实相信忠告。并且那恰恰是您马上就要得到的。我们能向您展示如何将 Outlook 电子邮件消息转换成文本文件吗?我们当然能,但是,您必须意识到,我们将仅能向您展示此类最简单的示例:将收件箱中的第一项转换为文本文件。如果要再特殊点该怎么办?例如,如果要将含有特定主题行的消息或在特定日期所发送的消息转换为文本文件,该怎么办?遗憾的是,我们在今天的专栏中将不能向您展示这些;如果想要知道如何查找特定消息,请查看 Office Space 专栏过滤 Microsoft Outlook 中的电子邮件信息。
另一借口,嗯,另一忠告便是,我们无法在此为您提供完全自动的解决方案;这是由于内置于 Outlook 中的安全性方面的原因。为了将电子邮件消息保存为文本文件,您需要能够访问某些触发 Outlook 中安全警报的属性(例如消息正文)。这意味着当您运行脚本时,将弹出一个安全警告对话框。在继续运行该脚本之前(并在消息可被保存之前),您将需要单击该对话框中的“是”。(必须实际进行单击操作;而不能使用 SendKeys 仿效鼠标单击。)脚本将运行,但是(又说了这个词),您不能将脚本设定为只通过自身运行;而是在脚本运行时,您需要在那,以便处理出现的对话框。
看上去总是如此,… 忠告 … 比脚本占用了更多的空间。下面的这个脚本将您收件箱中的第一条消息保存为名为 C:\Scripts\MailMessage.txt 的文件:
Const olFolderInbox = 6Const olTxt = 0Set objOutlook = CreateObject("Outlook.Application")Set objNamespace = objOutlook.GetNamespace("MAPI")Set objFolder = objNamespace.GetDefaultFolder(olFolderInbox)Set colMailItems = objFolder.ItemsSet objItem = colMailItems.GetLast()objItem.SaveAs "C:\Scripts\MailMessage.txt", olTxt
首先,我们定义一对常量:一个是 olFolderInbox(其值为 6),我们将用其指示要连接到的 Outlook 文件夹;另一个是 olTxt(其值为 0),用其指示 Outlook 以何种格式保存我们的邮件消息。然后是三行代码,用于将我们连接到 Outlook 和 MAPI 命名空间,并将我们绑定到收件箱文件夹中(使用 GetDefaultFolder 方法):
Set objOutlook = CreateObject("Outlook.Application")Set objNamespace = objOutlook.GetNamespace("MAPI")Set objFolder = objNamespace.GetDefaultFolder(olFolderInbox)
在连接到收件箱后,其余部分就很容易了。我们使用接下来的这行代码返回收件箱中所找到的所有项的集合:
Set colMailItems = objFolder.Items
有了该集合后,我们使用 GetLast() 方法绑定到该集合中的第一项(即收件箱中的第一个邮件消息)。然后调用 SaveAs 方法保存该消息,并向 SaveAs 传递一对参数:文本文件的完整路径 (C:\Scripts\MailMessage.txt) 和常量 olTxt。
简单、直接,且最大的优势在于没有借口。只有这种方式,才是我们脚本专家的风格。