保存为HTML而不创建.xml文件的子文件夹

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了保存为HTML而不创建.xml文件的子文件夹相关的知识,希望对你有一定的参考价值。

我试图将所有传入的电子邮件另存为.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中,我通过保存为Filtered HTML解决了这个问题,但Outlook似乎无法实现。

这是我在MS Word中的代码:

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

或者是否可以使用MailItem.BodyFormat编辑项目的正文然后将其另存为html?这样,当它保存为HTML时,我们将不会拥有Outlook的所有自动编码。 (https://msdn.microsoft.com/en-us/library/office/ff869979.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
另一答案

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

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

不知何故,微软的支持页面没有提到Filtered HTML可以在他们的代码上运行,但实际上它确实如此。

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

以上是关于保存为HTML而不创建.xml文件的子文件夹的主要内容,如果未能解决你的问题,请参考以下文章

使用 HTML5 + Javascript 将数据字符串保存为文件而不使用 URI [重复]

将文件添加到 tar 存档而不先保存

在内存中创建 eml 文件而不将其保存在磁盘上

在 Spark 的嵌套 XML 中为来自父数据框的子数据框添加额外的列

将 WPF 画布保存到文件而不损失质量(不使用位图作为中介)

如何使用 Linq to XML 将 HTML 保存在 XML 文件中?