WordPress.org

Make WordPress Core

Ticket #6788: wp-mail.php.patch

File wp-mail.php.patch, 2.2 KB (added by Laenny, 7 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];