将内联指定的UTF-8邮件转换为UTF-8文本

时间:2011-11-19 11:51:13

标签: php email encoding utf-8

我想将以下原始邮件主题转换为普通的UTF-8文本:

  

=?UTF-8 2 B 4 UmU6ICMyLUZpbmFsIEFjY2VwdGFuY2UgdGVzdCB3aXRoIG5ldyB0ZXh0IHdpdGggU2xvdg ==?=           =?UTF-8 2 B 4 YWsgaW50ZXJwdW5jdGlvbnMgIivEvsWhxI3FpcW + w73DocOtw6khxYgi?=

真正的原因是(是的,其中有一些疯狂的变音符号):

  

回复:#2 - 最终验收测试,带有斯洛伐克语中间节点的新文本“+ľščťžýáíé!”

我处理邮件主题的方式:

function subject_imapUtf8($str){
    $conv = '';
        $subParts = preg_split('/[\r\n]+/',$str);
    for($i=0;$i<count($subParts);$i++){
        $conv .=  imap_utf8(trim($subParts[$i]));
    }
    return $conv;
} 

这个例子给了我:

  

=?UTF-8?B?UmU6ICMyLUZpbmFsIEFjY2VwdGFuY2UgdGVzdCB3aXRoIG5ldyB0ZXh0IHdpdGggU2xvdg ==?= ak interpunctions“+ľščťžýáíé!”

因此,您可以看到主题的第二部分/行被转换为correclty。

我需要更改什么才能正确转换第一部分?

1 个答案:

答案 0 :(得分:5)

mb_internal_encoding("UTF-8");
echo mb_decode_mimeheader($mime);