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


Convert inline specified UTF-8 mail subject to UTF-8 text

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

= ? utf - 8 B ? UmU6ICMyLUZpbmFsIEFjY2VwdGFuY2UgdGVzdCB3aXRoIG5ldyB0ZXh0IHdpdGggU2xvdg = = ?=utf - 8 = ? B ? YWsgaW50ZXJwdW5jdGlvbnMgIivEvsWhxI3FpcW + w73DocOtw6khxYgi ?=

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

Re: #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标点符号"+ľščťžýáíé!ň"

所以你可以看到主题的第二部分/行被正确转换。

我需要改变什么来正确转换第一部分?

mb_internal_encoding("UTF-8");
echo mb_decode_mimeheader($mime); 
  • 演示http://codepad.viper - 7. - com/a9l4ia