ID:               49272
 User updated by:  u235e at hotmail dot com
 Reported By:      u235e at hotmail dot com
 Status:           Open
 Bug Type:         mbstring related
 Operating System: *
 PHP Version:      5.2.10
 New Comment:

Disregard the parts about stripping quotes.


Previous Comments:
------------------------------------------------------------------------

[2009-08-16 08:36:56] u235e at hotmail dot com

Description:
------------
Function: mb_encode_mimeheader

When trying to construct a structured header field like From or To,
only _words_ within phrases or ctext in comments may be encoded,
especially not within "quoted strings" as of RFC 2047 section 5.
This function does not take that into account, even worse it may make
the field invalid as it greedily encodes everything after the first
encountered WSP delimited text with non ASCII characters.

This function is only useful for unstructured header fields as it is
and thus only for the subject field in most common cases.
Judging from the manual and the given example, I take it that this is
not the only intended use.

The example below would also apply to (comments) not just "quoted
strings". Technically the quotes should probably not be part of the
encoded word ("lexically invisible") where as the () in comments must
stay in place to still recognize the text as a comment.

And as a side note: I dont understand why digits are encoded and spaces
not as underscores in "Q" scheme - renders the point of this scheme
useless?

Reproduce code:
---------------
<?php
mb_internal_encoding('ISO-8859-1');
$name = "Peter \"Der M\xFCller\""; // German - Peter <">Der Müller<">
// valid RFC 2822 display-name
$mbox = "peter.mueller";
$doma = "example.com";
$addr = mb_encode_mimeheader($name, "ISO-8859-1", "Q") . " <" . $mbox .
"@" . $doma . ">";
echo $addr;
?>

Expected result:
----------------
should be:
Peter =?ISO-8859-1?Q?=22Der=20M=FCller=22?=
<peter.muel...@example.com>
or very greedy:
=?ISO-8859-1?Q?Peter=20=22Der=20M=FCller=22?=
<peter.muel...@example.com>
or maybe even with the quotes stripped:
Peter =?ISO-8859-1?Q?Der=20M=FCller?= <peter.muel...@example.com>


Actual result:
--------------
Peter "Der =?ISO-8859-1?Q?M=FCller=22?= <peter.muel...@example.com>

Which is not a valid RFC 2822 name-addr (display-name) any more!



------------------------------------------------------------------------


-- 
Edit this bug report at http://bugs.php.net/?id=49272&edit=1

Reply via email to