我的任务是将mHtml嵌入到电子邮件正文中。问题是mhtml不是普通的html文件,因此我无法将其直接嵌入到电子邮件中。
如何将mhtml转换为html文件?
由于
答案 0 :(得分:1)
我在这个链接上找到了解决方案:
解决方案是在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数据(如果某些东西不能正常工作,对我来说太麻烦了。)