使用C#将MHTML转换为HTML

时间:2016-05-12 16:33:45

标签: c# reporting-services mhtml

我的任务是将mHtml嵌入到电子邮件正文中。问题是mhtml不是普通的html文件,因此我无法将其直接嵌入到电子邮件中。

如何将mhtml转换为html文件?

由于

3 个答案:

答案 0 :(得分:1)

我在这个链接上找到了解决方案:

Original (Dead) Link

Archived Link

解决方案是在MHTML中提取编码为Base64的HTML。

var decoded_text = new StringBuilder();
using (var reader = new StreamReader(mhtFile))
{
    while (!reader.EndOfStream)
    {
        var line = reader.ReadLine();
        if (line != "Content-Transfer-Encoding: base64") continue;

        reader.ReadLine(); //chew up the blank line
        while ((line = reader.ReadLine()) != String.Empty)
            if (line != null)
                decoded_text.Append(
                    Encoding.UTF8.GetString(
                        Convert.FromBase64String(line)));
        break;
    }
}

答案 1 :(得分:1)

当html中没有变音符号时(例如,例如捷克变音符号或其他2个字节的字符),可接受的解决方案可以正常工作。如果此类字符的第一个字节位于变量“行”的末尾,第二个字节位于下一个变量的开头,则html结果中将显示不可读的字符。

        var base64_text = new StringBuilder();
        using (var reader = new StreamReader(mhtFile))
        {
            while (!reader.EndOfStream)
            {
                var line = reader.ReadLine();
                if (line != "Content-Transfer-Encoding: base64") continue;

                reader.ReadLine(); //chew up the blank line
                while ((line = reader.ReadLine()) != String.Empty)
                    if (line != null)
                        base64_text.Append(line);
                break;
            }
            return Encoding.UTF8.GetString(Convert.FromBase64String(base64_text.ToString()));
        }

答案 2 :(得分:0)

我在文本编辑器(记事本++)中从此页面打开了.mhtml,HTML似乎在文件中,完好无损。你必须滚动浏览所有CSS。我只想创建一些东西来从文件中提取HTML文本,而不是处理base64数据(如果某些东西不能正常工作,对我来说太麻烦了。)