使用 C# 将 MHTML 转换为 HTML
Convert MHTML to HTML using C#
我的任务是将 mHtml 嵌入到电子邮件正文中。问题是 mhtml 不是普通的 html 文件,所以我无法将它直接嵌入到电子邮件中。
如何将 mhtml 转换为 html 文件?
谢谢
我在这个 link 上找到了解决方案:
解决方案是提取 MHTML.HTML 中编码为 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;
}
}
我在文本编辑器 (notepad++) 中打开此页面中的 .mhtml,HTML 似乎在文件中,完好无损。您必须向下滚动到所有 CSS。我只想创建一些东西来从文件中提取 HTML 文本,而不是处理 base64 数据(如果某些东西不能正常工作,对我来说太混乱了)。
当 html 中没有变音符号(ěščřžýáíé - 例如捷克语变音符号或其他 2 字节字符)时,可接受的解决方案工作正常。如果此类字符的第一个字节位于变量 "line" 的末尾,第二个字节位于下一个变量的开头,则 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()));
}
我的任务是将 mHtml 嵌入到电子邮件正文中。问题是 mhtml 不是普通的 html 文件,所以我无法将它直接嵌入到电子邮件中。
如何将 mhtml 转换为 html 文件?
谢谢
我在这个 link 上找到了解决方案:
解决方案是提取 MHTML.HTML 中编码为 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;
}
}
我在文本编辑器 (notepad++) 中打开此页面中的 .mhtml,HTML 似乎在文件中,完好无损。您必须向下滚动到所有 CSS。我只想创建一些东西来从文件中提取 HTML 文本,而不是处理 base64 数据(如果某些东西不能正常工作,对我来说太混乱了)。
当 html 中没有变音符号(ěščřžýáíé - 例如捷克语变音符号或其他 2 字节字符)时,可接受的解决方案工作正常。如果此类字符的第一个字节位于变量 "line" 的末尾,第二个字节位于下一个变量的开头,则 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()));
}