ID: 27966
Updated by: [EMAIL PROTECTED]
Reported By: br at creativedigitalcolor dot com
Status: Open
-Bug Type: Strings related
+Bug Type: Documentation problem
Operating System: redhat 9
PHP Version: 4.3.4
New Comment:
Reclassified.
Since you're the first and only person complaining about this, we're
not gonna change the behaviour but rather write better documentation
for this/these functions in question..
Previous Comments:
------------------------------------------------------------------------
[2004-04-12 21:06:55] br at creativedigitalcolor dot com
After taking a while to build php with the c-client
library i found that the imap_qprint produced identical
results (the extra period was still there). I can not
deterimine wether or not this is a bug becuase it is a
question of interpretation.(Are these functions meant to
run line by line or as one longer string) Either way,
that pesky period will need removed before the
attachments can be correctly saved the way they were
sent.I know from the diff that pine (my email client)
did remove the extra period when it decoded the
attachment from the identicat file I parsed with
php."Quoted printable" needs better defined to be
included along with the many clearly defined PHP String
Functions.
------------------------------------------------------------------------
[2004-04-12 20:10:05] [EMAIL PROTECTED]
Aren't you now mixing two different things with each other?
The function quoted_printable_decode() is doing the same as
imap_qprint() which conforms to RFC2045, section 6.7..
------------------------------------------------------------------------
[2004-04-12 18:03:15] br at creativedigitalcolor dot com
quote rfc2821 section 4.5.2:
" - Before sending a line of mail text, the SMTP
client checks the first character of the line. If it is
a period, one additional period is inserted at the
beginning of the line."
<?php
$part =
"=41=42=43=44..=45=46=47=61=62=63=64=65=66=67=68=30=31=3
2=33=34=35=36=37\n..=41=42=43=44=45=46=47=61=62=63=64=65
=66=67=68=30=31=32=33=34=35=36=37";
$part = quoted_printable_decode($part);
echo "Expected result\n";
echo "ABCD..EFGabcdefgh01234567
.ABCDEFGabcdefgh01234567";
echo "\n\nGot result\n";
echo $part;
echo "\n\n";
?>
------------------------------------------------------------------------
[2004-04-12 17:27:31] [EMAIL PROTECTED]
AFAIK it only doubles the . if it's the ONLY character on a line. Can
you quote from the RFC to prove that's not the case?
Also, please provide a selfcontained example (that we can copy & paste
& run) to show why you think there is a bug.
------------------------------------------------------------------------
[2004-04-12 16:04:03] br at creativedigitalcolor dot com
Description:
------------
quoted_printable_decode() does not handle lines starting
with "..".
smtp appends a period to the beginning of a new line for
lines already starting with a period. (per rfc2821, this is
to distinguish between the single period used for marking
the end of a message). This is reproducable every time.
I also saw the function make a ".." in the middle of a line
as "." where what was really wanted was "..".
<?php
/* here is my temporary fix, but also further explains the
problem */
/* 1. Replace all of the \n\.\. with \r\. */
$part = preg_replace('/(\n)\.\./is','$1.',$part);
/* 2. Replace all of the .. with =2E. */
$part = preg_replace('/\.\./is','=2E.',$part);
/* 3. Decode print quotable */
$part = quoted_printable_decode($part);
echo $part ;
?>
Reproduce code:
---------------
G=8D=C2r+?yo7*=C0=C0=99=D2=B4HT=D1=E2}=AA=FE[=E0=D2=E0J=B5$o=DA=8F>=9B..=
o=B5d=F6u,=F27=AA6VN=0FM=9F=03=3Dj=3DU=FBl=CF=1A=A1|ok=B3G=AD=B0Y=CF(=D4=
=AC=B4=B0^a=1B&_=D3=AA=3DD=F4s=B8H=AD=D7=97q=E8=08=D4=EBi=14G#=85=83=C5=81=
..=FD~=0E=12i=D4=1A=8C=EA=F5=FD=1C,Q=BB=E87=D3=D6=DE=C9=C2^=DC=D2=0D=F1=DD=
$part = quoted_printable_decode($part);
Expected result:
----------------
<PRE>G�r+?yo7*��ҴHT��}�[���J�$o�>..o�d�u,�7�6VNM=
j=U�l��|okG�Y�(Ԭ��^a&_Ӫ=
D�s�Hq���iG#�.~i���,Q��7����^��
�</PRE>
Actual result:
--------------
<PRE>G�r+?yo7*��ҴHT��}�[���J�$o�>..o�d�u,�7�6VNM=
j=U�l��|okG�Y�(Ԭ��^a&_Ӫ=
D�s�Hq���iG#�..~i���,Q��7����^��
�</PRE>
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=27966&edit=1