1

私はimap_fetchbody()でphpのメールを読み、imap_qprint()でデコードしました。

$body = imap_fetchbody($mbox, $no, 1);
$body = imap_qprint($body);

ただし、元のメールと出力メールには違いがあります

元のメール:

プレーンテキスト

これはチェックするテストメールです

最初の2番目の3番目の4番目の5番目の6番目のホーム

これは黄色の背景です

ウェブサイト:http://bizved.com

見積もりの​​テスト

ありがとうHirenManekBhuved Solutions

出力メール

プレーンテキスト

これはチェックするテストメールです

最初の2番目の3番目の4番目の5番目の6番目のホーム

これは黄色の背景です

ウェブサイト:�http://bizved.com

引用のテスト

ありがとうございます。HirenManekBhuvedSolutions

誰かが解決策を与えることができますか?前もって感謝します。

4

2 に答える 2

0

私はいつもimapsで同じ問題を抱えていました。私は何も保証しませんが、これを試してみることをお勧めします:

function utf8_imap_header_decode($str)
{
    $tmp = imap_mime_header_decode($str);
    if (!mb_check_encoding($tmp[0]->text, 'UTF-8'))
        return utf8_encode($tmp[0]->text);

    return $tmp[0]->text;
}

function utf8_imap_body_decode($str)
{
    return utf8_encode(quoted_printable_decode($str));
}
于 2012-05-05T13:22:24.230 に答える
0

メールヘッダーはすでに文字セットになっているので、次の解決策を作成しました。

$st = imap_fetchstructure($mbox, $no); 
$part = $st->parts[$partno];
$body = imap_fetchbody($mbox, $no, $partno);
$body = imap_qprint($body);
$charset = 'UTF-8';
if(!empty($part->parameters)){
    for ($k = 0, $l = count($part->parameters); $k < $l; $k++) {
        $attribute = $part->parameters[$k];
        if($attribute->attribute == 'CHARSET'){
            $charset = $attribute->value;
        }
    }
}
//echo $charset;
$bodytext = mb_convert_encoding($body,'UTF-8',$charset);

これは完全な解決策ではありません。文字エンコード専用です。メールには、プレーンテキスト、HTMLテキスト、添付ファイルなどの異なる部分があり、タイプごとに異なる処理を行う必要があります。

于 2012-05-15T12:05:34.860 に答える