WordPress.org

Make WordPress Core

Ticket #6788: wp-mail.php.patch

File wp-mail.php.patch, 2.2 KB (added by Laenny, 10 years ago)

Patch using iconv to convert most encodings to utf8

  • wp-mail.php

    old new  
    2929
    3030        $content = '';
    3131        $content_type = '';
     32        $content_type_charset = '';
    3233        $content_transfer_encoding = '';
    3334        $boundary = '';
    3435        $bodysignal = 0;
     
    4243                        $content .= $line;
    4344                } else {
    4445                        if (preg_match('/Content-Type: /i', $line)) {
     46                                echo "content-type-line: $line<br>";
    4547                                $content_type = trim($line);
    4648                                $content_type = substr($content_type, 14, strlen($content_type)-14);
    4749                                $content_type = explode(';', $content_type);
     50                                for ( $ctp = 1 ; $ctp < count($content_type) ; $ctp++ ) {
     51                                        $candidate = $content_type[$ctp];
     52                                        echo "candidate: $candidate<br>";
     53                                        if ( preg_match('/charset=/i', $candidate) ) {
     54                                                $content_type_charset=explode('=', $candidate);
     55                                                $content_type_charset=$content_type_charset[1];
     56                                                $content_type_charset=trim($content_type_charset);
     57                                        }
     58                                }
    4859                                $content_type = $content_type[0];
     60                                echo "content-type: $content_type<br>content-type-charset: '$content_type_charset'<br>";
    4961                        }
    5062                        if (preg_match('/Content-Transfer-Encoding: /i', $line)) {
    5163                                $content_transfer_encoding = trim($line);
     
    6173                        if (preg_match('/Subject: /i', $line)) {
    6274                                $subject = trim($line);
    6375                                $subject = substr($subject, 9, strlen($subject)-9);
    64                                 $subject = wp_iso_descrambler($subject);
    65                                 // Captures any text in the subject before $phone_delim as the subject
     76                                // $subject = wp_iso_descrambler($subject);
     77                                $subject = iconv_mime_decode($subject,2,'utf8');
     78                                // Captures any text in the subject before $phone_delim as the subject
    6679                                $subject = explode($phone_delim, $subject);
    6780                                $subject = $subject[0];
    6881                        }
     
    148161                $content = quoted_printable_decode($content);
    149162        }
    150163
     164        if (strlen($content_type_charset)) {
     165                echo "converting '$content_type_charset' to 'utf8'<br>";
     166                echo "content before: $content<br>";
     167                $content = iconv($content_type_charset,'utf8',$content);
     168                echo "content after: $content<br>";     
     169        }
     170
    151171        // Captures any text in the body after $phone_delim as the body
    152172        $content = explode($phone_delim, $content);
    153173        $content[1] ? $content = $content[1] : $content = $content[0];