我的任务是将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数据(如果有些东西工作不正常,我会感到太困惑)。