解析MIME邮件类型

时间:2013-06-04 19:17:11

标签: c# asp.net mime-types mime

经过多方努力,我创建了自己的邮件解析器。现在已成功解析并显示电子邮件。但很少有专门从苹果或Iphone发出的邮件在解析后会出现这样的情况。我不知道为什么会这样。请帮忙。

= D8 = AA = D9 = 88 = D8 = = A7 = D8 = AC = D9 = 87 = D9 = 86 = D9 = 8A = D9 = 85 = D8 = B4 = D9 = 83 = D9 = 84 = D8 = A9 = D8 = A5 = D8 = B4 = D8 = = A7 = D8 = B1 = D8 = A9 = D9 = 84 = D9 = 84 = D9 = 83 = D8 = B1 = D8 = AA = D8 = B1 = D9 = 82 = D9 = 85 410814189 = 68 = D8 = B9 = D9 = 84 = D9 = 85 = D8 = A7 = D9 = 8B = D8 = A8 = D8 = A3 = D9 = 86 = D8 = A5 = D8 = B4 = D8 =

1 个答案:

答案 0 :(得分:1)

您的邮件解析器似乎无法处理Quoted Printable内容的解码。

我想如果你查看标题,你会发现这样的标题:

Content-Transfer-Encoding:quoted-printable

我已经编写了几个电子邮件客户端和多个mime解析器,目前我正在编写一个名为MimeKit的C#中新的mime解析器(其他人在C中):http://github.com/jstedfast/MimeKit。这可能是你感兴趣的......

我有一个可过滤的流类,你可以添加一个QuotedPrintableDecoder(我也已实现),然后传递你的数据来解码它。或者您可以直接通过QuotedPrintableDecoder传递它,具体取决于您最简单的方法。

使用示例:

var decoder = new QuotedPrintableDecoder ();
var output = new byte[decoder.EstimateOutputLength (input.Length)];
var outputLength = decoder.Decode (input, 0, input.Length, output);

// convert the output into a string displayable to the user...
var text = System.Text.Encoding.UTF8.GetString (output, 0, outputLength);

显然,您使用适当的System.Text.Encoding作为内容(通过查看Content-Type标头中的" charset"参数),而不是盲目地使用System.Text.Encoding .UTF8。