如何在PHP中解码邮件头字符串及其编码类型

时间:2010-04-27 15:19:41

标签: php utf-8 iso-8859-1 decoding

我正在用PHP创建一个基于Web的小型邮件客户端,并注意到许多电子邮件主题和内容如下所示:

=?ISO-8859-1?Q?Everything_for_=A35_-_Box_Sets,_Games_?= =?ISO-8859-1?Q?and_CD_Soundtracks...hurry,_ends_soon?=
=?utf-8?B?UGxheS5jb206IE9uZSBEYXkgT25seSDigJMgT3V0IG9mIHRoaXMgV29ybGQgRGVhbHMh?=
=?windows-1252?Q?Jon,_delivery_on_us_&_earn_=A35_credit_or_50_prints?=

有没有人有解码的想法,以便正确显示?

3 个答案:

答案 0 :(得分:4)

这是一个RFC 2047编码字。它由mb_decode_mimeheader函数解码。

答案 1 :(得分:2)

这是主要用于标头的MIME编码字符串。您可以找到许多可以处理此问题的库。例如,获取PEAR :: mail并使用此函数

Mail_mimeDecode::_decodeHeader()

答案 2 :(得分:0)

这是一个老问题,但最近我在解析电子邮件时遇到了这个问题。 使用函数imap_header_info打印标题信息时,显示以下数组:

Hello

然而,原始主题是" 字段名称 - 需要冒险进入标签(某些内容)"

为了解决此问题,功能imap_mime_header_decode 必须在循环中使用才能生成正确的文本:

stdClass Object
(
    [subject] => =?Windows-1252?Q?field_name_-_need___`at_risk=92____into_t?= =?Windows-1252?Q?he_label_(_some_content_to_)_?=
)