0

经过大量努力,我创建了自己的邮件解析器。现在成功地能够解析和显示电子邮件。但是很少有邮件特别是从苹果或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=

4

1 回答 1

1

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

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

内容传输编码:quoted-printable

我已经编写了几个电子邮件客户端和多个 mime 解析器,目前正在用 C# 编写一个新的 mime 解析器(其他都是用 C 语言),这里称为 MimeKit: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。

于 2013-08-27T13:31:43.850 回答