SaveAs html 而不用 .xml 文件创建子文件夹

SaveAs html without creating the subfolders with .xml files

我正在尝试将所有收到的电子邮件另存为 .html 文件,但它会为每封电子邮件创建一个子文件夹。

这是我的代码:

Public Sub ShowMessage(Item As Outlook.MailItem)
Dim path As String
path = "C:\Users\me\Desktop\"
Item.SaveAs path & Item.SenderName & ".htm", olHTML
End Sub

它给了我类似的东西: "joe.htm" 和文件夹调用 "joe_files" "colorschememapping.xml" 和 "filelist.xml" 以及 "themedata.thmx"

有没有办法在没有这些文件的情况下另存为?

在 Word 中,我通过另存为过滤 HTML 解决了这个问题,但在 Outlook 中似乎不可能。

这是我在 MSWord 中的代码:

ActiveDocument.SaveAs FileName:=Path, FileFormat:=wdFormatFilteredHTML

或者是否可以使用 MailItem.BodyFormat 编辑项目的正文,然后将其另存为 html?这样我们就不会在保存为 HTML 时拥有 Outlook 的所有自动编码。 (https://msdn.microsoft.com/en-us/library/office/ff869979.aspx)

没关系...我解决了。 通过重新阅读我的问题,我才意识到答案就在那里。

item.SaveAs path & Item.SenderName & ".htm", olTxt

Microsoft 的支持页面不知何故没有提到 Filtered HTML 在他们的代码上工作,但实际上确实如此。

https://msdn.microsoft.com/en-us/library/office/ff868727.aspx?

尝试使用 olMHTML (10) 格式。

您也可以简单地阅读 HTMLBody 属性 并将其保存为文件 - 问题可能是 Unicode 字符 - HTMLBody 属性 是 UTF-16,并且HTML 文件必须是 8 字节,因此您需要根据 PR_INTERNET_CPID 的值(它可能不一定与 HTML 正文中的代码页匹配)适当地转换它。

如果使用 Redemption 是一个选项(我是它的作者),它支持 olHTMLEmbeddedImages 格式,它创建一个 HTML 文件,其中的图像数据位于 <img> 标签。 Outlook(使用 Word 来呈现 HTML 消息)不喜欢这样,但 IE 和 Firefox 应该没问题。它嵌入了已附加到消息的图像以及参考图像(已下载):

  set Session = CreateObject("Redemption.RDOSession")
  Session.MAPIOBJECT = Application.Session.MAPIOBJECT
  set Item = Session.GetMessageFromID(Application.ActiveExplorer.Selection(1).EntryID)
  Item.SaveAs "c:\temp\HTMLWithImages.html", 1033 ' olHTMLEmbeddedImages