使用C#将MHTML转换为HTML



我的任务是将mHtml嵌入到电子邮件正文中。问题是mhtml不是一个普通的html文件,所以我不能将它直接嵌入到电子邮件中。

如何将mhtml转换为html文件?

感谢

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

原始(死)链路

存档链接

解决方案是提取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(line);
        break;
    }
    return Encoding.UTF8.GetString(
               Convert.FromBase64String(decoded_text.ToString())));
}

编辑:已修复支持Otas 建议的html中的变音符号字母

当html中没有变音符号字母(例如,Şščřžýáíé-czech变音符号或其他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()));
        }

我在文本编辑器(notepad++)中从该页面打开了.mhtml,HTML似乎在文件中,完好无损。你必须向下滚动通过所有的CSS。我只想创建一些从文件中提取HTML文本的东西,而不是处理base64数据(如果有些东西工作不正常,我会感到太困惑)。

相关内容

  • 没有找到相关文章

最新更新