【问题标题】:Decode mail subject解码邮件主题
【发布时间】:2015-05-12 00:28:33
【问题描述】:

我需要解码一些邮件的主题。我有这个代码

$subject = mimie_text_decode($header->Subject);

function mimie_text_decode($string){

            $string = htmlspecialchars(chop($string));

            $elements = imap_mime_header_decode($string);

            if(is_array($elements)){
                for ($i=0; $i<count($elements); $i++) {
                    $charset = $elements[$i]->charset;
                    $txt .= $elements[$i]->text;
                }
            } else {
                $txt = $string;
            }
            if($txt == ''){
                $txt = 'No_name';
            }

            return $txt;
        }

当我的主题是这样的 ?UTF-8?Q?C=C3=BAspide?= 它可以正常工作,但如果我的主题不是 UTF-8 并且像这样 ?Windows-1252?Q?Pro=F3ba?= 它不会显示带有重音的字符,它会消除所有带有重音的字符,即只显示单词,直到出现重音。如果我有“Más”这个词,它只会显示“M”

有什么解决办法?

谢谢

【问题讨论】:

    标签: php email


    【解决方案1】:

    您的代码适合我,但您编写的编码主题应该以 =? 开头。

    =?Windows-1252?Q?Pro=F3ba?=试试你的代码

    Windows-1252 是 Microsoft 创建的另一种编码,非常类似于 ISO-8859-15 [1]

    如果不适合您添加此 = 字符作为传递给 mimie_text_decode 的字符串的第一个元素,请告诉我们您使用的是哪个版本的 php。

    [1]http://en.wikipedia.org/wiki/Windows-1252

    【讨论】:

    • 我使用的是 PHP 5.3.10,但我的服务器允许我更改为 5.3.2 或 5.4.4。你是对的,我写的代码没有=,而它以=开头,它不起作用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-04-27
    • 2017-05-16
    • 2011-11-26
    • 1970-01-01
    • 1970-01-01
    • 2011-09-02
    • 2020-07-11
    相关资源
    最近更新 更多