3

我正在用 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?=

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

4

3 回答 3

4

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

于 2010-04-27T16:03:18.873 回答
2

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

Mail_mimeDecode::_decodeHeader()
于 2010-04-27T15:29:12.263 回答
1

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

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

但是,原来的主题是“字段名称-需要进入风险标签(一些内容)

为了解决这个问题,必须在循环中使用函数imap_mime_header_decode 来生成正确的文本:

$header = imap_headerinfo($email_obj, $email_ref_number, 0);
$elements = imap_mime_header_decode($header->subject);
$email_subject = '';
if ( ! empty($elements)) {
    foreach ($elements AS $e_part) {
        if (isset($e_part->text)) {
            $email_subject .= $e_part->text;
        }
    }
}
echo $email_subject;
于 2016-03-28T10:56:58.157 回答