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