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

时间:2015-03-02 10:31:12

标签: html vba outlook ms-office outlook-vba

我正在尝试将所有传入的电子邮件另存为.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

2 个答案:

答案 0 :(得分:0)

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

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

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

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

答案 1 :(得分:0)

尝试使用olMHTML(10)格式。

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

如果使用Redemption是一个选项,它支持olHTMLEmbeddedImages格式,它会在<img>标记内创建包含图像数据的HTML文件。 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