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

これはRFC2047でエンコードされた単語です。関数によってデコードされ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 に答える