mb_encode_mimeheader function can't deal with long non-English strings?
| From: | Coiby Xu | Date: | Sun, 29 Apr 2012 23:04:14 +0000 |
| Subject: | mb_encode_mimeheader function can't deal with long non-English strings? | ||
| Groups: | php.general | ||
| Request: | Send a blank email to php-general+get-317724@lists.php.net to get a copy of this message | ||
Hi all,
I wonder why mb_encode_mimeheader function can't deal with long non-english
strings. Here are the codes:
> function util_encode_mimeheader($headername,$str,$charset) {
> if (function_exists('mb_internal_encoding') &&
> function_exists('mb_encode_mimeheader')) {
> $x = mb_internal_encoding();
> mb_internal_encoding("UTF-8");
> $y = mb_encode_mimeheader($headername . ": " . $str,
> $charset, "Q");
> mb_internal_encoding($x);
> return $y;
> }
> }
According to my tests, if the subject have too many characters, there will
be more than one "?UTF-8?Q??" generated which make the MIME header
invaild. If there are more than one "?UTF-8?Q??" , the remaing "?UTF-8?Q?"s
will appear in the body of email, i.e. the beginning of the email will be:
> " =?UTF-8?Q?=E6=9C=89=E9=97=AE=E9=A2=98?=
> Content-type: text/plain; charset=UTF-8 ....".
Can anyone explain this?
Thanks!