0

phpとimapでメールを取得するのに問題があります。各送信者は、異なる文字セットエンコーディングでエンコードされた電子メールを送信するため、私にとって普遍的なソリューションを作成することは困難です。

データを失うことなくfrom、to、subject、body / htmlをUTF-8文字列にフェッチしたい場合、これはどのように簡単に実行できますか?

私は何時間も解決策を見つけようとしましたが、私の現在のコードは問題を解決しません。

ご挨拶。

4

2 に答える 2

1

「imapからメールを取得してutf-8に変換する」とだけ言うことはできません。これでメールパーツを取得する必要があります:

$struct = $this->imap_fetchstructure($this->mbox, $mId, FT_UID);

次に、そのメールから何を選択します。そして、あなたが必要なものを決定した後、それからそれへの変換を言い、それはこのようになります:

if($partStruct->encoding == 1) {
    $data = $this->imap_utf8($data);
}
elseif($partStruct->encoding == 2) {
    $data = $this->imap_binary($data);
}
elseif($partStruct->encoding == 3) {
    $data = $this->imap_base64($data);
}
elseif($partStruct->encoding == 4) {
    $data = $this->imap_qprint($data);
} 
//etc.....

私はクラスからコピー/貼り付けするだけです。他の部分はあなたが自分で理解する必要があります!これに対する簡単な解決策を探しているなら、何もないと言わせてください。インターネットからいつでもいくつかのimapphpクラスをダウンロードできます。

于 2012-11-25T23:25:44.950 に答える
0

mb_detect_encoding()次の関数を使用してみてください:http: //php.net/manual/en/function.mb-detect-encoding.php

そしてmb_convert_encoding(): http: //php.net/manual/en/function.mb-convert-encoding.phpからUTF-8へ。

電子メールヘッダーを調べて、Content-Typeヘッダーを探すこともできます。例を参照してください。

Content-Type: text/html; charset="UTF-8"
于 2012-11-25T22:23:30.800 に答える