PHP curl not returning data in all cases for IMAP
Wayne Allen <[email protected]> Fri, 17 Jun 2016 14:40:26 -0700
| Newsgroups | gmane.comp.web.curl.php |
|---|---|
| Message-ID | <CACOA_7btCfD5YvfzThQJTPrkbyCG_OP4kYhfNw1xEPdEyVkPAA@mail.gmail.com> |
--===============0071689407==
Content-Type: multipart/alternative; boundary=94eb2c062470f1574c053580336d
--94eb2c062470f1574c053580336d
Content-Type: text/plain; charset=UTF-8
I am implementing a basic IMAP client that supports multiple connection
libraries - php_imap, sockets and php-curl.
The php_imap and sockets methods work fine. The curl method works for all
commands except FETCH so I know I don't have an error in my code. If I send
the same command via sockets it works, so I also know that I don't have an
error in my command. Additionally if I enable verbose output I can see that
the message is actually sent back.
function write($command) {
$url = ($this->type == 'imap' ? 'imap' : 'pop3') . ($this->secure
? 's' : '') . '://' . $this->host . '/INBOX';
$ch = curl_init();
curl_setopt($ch, CURLOPT_USERPWD, "$this->username:$this->password");
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_PORT, $this->port);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $this->timeout);
curl_setopt($ch, CURLOPT_TIMEOUT, $this->timeout);
$fp = tmpfile();
curl_setopt($ch, CURLOPT_FILE, $fp);
curl_setopt($ch, CURLOPT_VERBOSE, true);
$verbose = fopen('php://temp', 'w+');
curl_setopt($ch, CURLOPT_STDERR, $verbose);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, $command);
$res = curl_exec($ch);
rewind($verbose);
$verboseLog = stream_get_contents($verbose);
echo($verboseLog);
fclose($verbose);
return $res;
}
This works:
write('STATUS "INBOX" (MESSAGES)');
This returns empty string (UID is valid - works with socket)
$uid = 181;
write('UID FETCH ' . $uid . ' (BODY[])');
Is there is bug in the curl IMAP implementation? I've tested with curl
7.30.0 and 7.35.0
http://stackoverflow.com/questions/37870022/php-curl-not-returning-data-in-all-cases
--94eb2c062470f1574c053580336d
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable
<div dir=3D"ltr"><p style=3D"margin:0px 0px 1em;padding:0px;border:0px;font=
-size:15px;clear:both;color:rgb(36,39,41);font-family:Arial,"Helvetica=
Neue",Helvetica,sans-serif;line-height:19.5px">I am implementing a ba=
sic IMAP client that supports multiple connection libraries - php_imap, soc=
kets and php-curl.</p><p style=3D"margin:0px 0px 1em;padding:0px;border:0px=
;font-size:15px;clear:both;color:rgb(36,39,41);font-family:Arial,"Helv=
etica Neue",Helvetica,sans-serif;line-height:19.5px">The php_imap and =
sockets methods work fine. The curl method works for all commands except FE=
TCH so I know I don't have an error in my code. If I send the same comm=
and via sockets it works, so I also know that I don't have an error in =
my command. Additionally if I enable verbose output I can see that the mess=
age is actually sent back.</p><p style=3D"margin:0px 0px 1em;padding:0px;bo=
rder:0px;font-size:15px;clear:both;color:rgb(36,39,41);font-family:Arial,&q=
uot;Helvetica Neue",Helvetica,sans-serif;line-height:19.5px"><br></p><=
pre class=3D"" style=3D"margin-top:0px;margin-bottom:1em;padding:5px;border=
:0px;font-size:13px;width:auto;max-height:600px;overflow:auto;font-family:C=
onsolas,Menlo,Monaco,"Lucida Console","Liberation Mono"=
,"DejaVu Sans Mono","Bitstream Vera Sans Mono","Co=
urier New",monospace,sans-serif;color:rgb(57,51,24);word-wrap:normal;b=
ackground-color:rgb(239,240,241)"><code style=3D"margin:0px;padding:0px;bor=
der:0px;font-family:Consolas,Menlo,Monaco,"Lucida Console","=
Liberation Mono","DejaVu Sans Mono","Bitstream Vera San=
s Mono","Courier New",monospace,sans-serif;white-space:inher=
it"><span class=3D"" style=3D"margin:0px;padding:0px;border:0px;color:rgb(4=
8,51,54)"> </span><span class=3D"" style=3D"margin:0px;padding:0px;borde=
r:0px;color:rgb(16,16,148)">function</span><span class=3D"" style=3D"margin=
:0px;padding:0px;border:0px;color:rgb(48,51,54)"> write</span><span class=
=3D"" style=3D"margin:0px;padding:0px;border:0px;color:rgb(48,51,54)">(</sp=
an><span class=3D"" style=3D"margin:0px;padding:0px;border:0px;color:rgb(48=
,51,54)">$command</span><span class=3D"" style=3D"margin:0px;padding:0px;bo=
rder:0px;color:rgb(48,51,54)">)</span><span class=3D"" style=3D"margin:0px;=
padding:0px;border:0px;color:rgb(48,51,54)"> </span><span class=3D"" style=
=3D"margin:0px;padding:0px;border:0px;color:rgb(48,51,54)">{</span><span cl=
ass=3D"" style=3D"margin:0px;padding:0px;border:0px;color:rgb(48,51,54)">
$url </span><span class=3D"" style=3D"margin:0px;padding:0px;border:0px=
;color:rgb(48,51,54)">=3D</span><span class=3D"" style=3D"margin:0px;paddin=
g:0px;border:0px;color:rgb(48,51,54)"> </span><span class=3D"" style=3D"mar=
gin:0px;padding:0px;border:0px;color:rgb(48,51,54)">(</span><span class=3D"=
" style=3D"margin:0px;padding:0px;border:0px;color:rgb(48,51,54)">$this</sp=
an><span class=3D"" style=3D"margin:0px;padding:0px;border:0px;color:rgb(48=
,51,54)">-></span><span class=3D"" style=3D"margin:0px;padding:0px;borde=
r:0px;color:rgb(48,51,54)">type </span><span class=3D"" style=3D"margin:0px=
;padding:0px;border:0px;color:rgb(48,51,54)">=3D=3D</span><span class=3D"" =
style=3D"margin:0px;padding:0px;border:0px;color:rgb(48,51,54)"> </span><sp=
an class=3D"" style=3D"margin:0px;padding:0px;border:0px;color:rgb(125,39,3=
9)">'imap'</span><span class=3D"" style=3D"margin:0px;padding:0px;b=
order:0px;color:rgb(48,51,54)"> </span><span class=3D"" style=3D"margin:0px=
;padding:0px;border:0px;color:rgb(48,51,54)">?</span><span class=3D"" style=
=3D"margin:0px;padding:0px;border:0px;color:rgb(48,51,54)"> </span><span cl=
ass=3D"" style=3D"margin:0px;padding:0px;border:0px;color:rgb(125,39,39)">&=
#39;imap'</span><span class=3D"" style=3D"margin:0px;padding:0px;border=
:0px;color:rgb(48,51,54)"> </span><span class=3D"" style=3D"margin:0px;padd=
ing:0px;border:0px;color:rgb(48,51,54)">:</span><span class=3D"" style=3D"m=
argin:0px;padding:0px;border:0px;color:rgb(48,51,54)"> </span><span class=
=3D"" style=3D"margin:0px;padding:0px;border:0px;color:rgb(125,39,39)">'=
;pop3'</span><span class=3D"" style=3D"margin:0px;padding:0px;border:0p=
x;color:rgb(48,51,54)">)</span><span class=3D"" style=3D"margin:0px;padding=
:0px;border:0px;color:rgb(48,51,54)"> </span><span class=3D"" style=3D"marg=
in:0px;padding:0px;border:0px;color:rgb(48,51,54)">.</span><span class=3D""=
style=3D"margin:0px;padding:0px;border:0px;color:rgb(48,51,54)"> </span><s=
pan class=3D"" style=3D"margin:0px;padding:0px;border:0px;color:rgb(48,51,5=
4)">(</span><span class=3D"" style=3D"margin:0px;padding:0px;border:0px;col=
or:rgb(48,51,54)">$this</span><span class=3D"" style=3D"margin:0px;padding:=
0px;border:0px;color:rgb(48,51,54)">-></span><span class=3D"" style=3D"m=
argin:0px;padding:0px;border:0px;color:rgb(48,51,54)">secure </span><span c=
lass=3D"" style=3D"margin:0px;padding:0px;border:0px;color:rgb(48,51,54)">?=
</span><span class=3D"" style=3D"margin:0px;padding:0px;border:0px;color:rg=
b(48,51,54)"> </span><span class=3D"" style=3D"margin:0px;padding:0px;borde=
r:0px;color:rgb(125,39,39)">'s'</span><span class=3D"" style=3D"mar=
gin:0px;padding:0px;border:0px;color:rgb(48,51,54)"> </span><span class=3D"=
" style=3D"margin:0px;padding:0px;border:0px;color:rgb(48,51,54)">:</span><=
span class=3D"" style=3D"margin:0px;padding:0px;border:0px;color:rgb(48,51,=
54)"> </span><span class=3D"" style=3D"margin:0px;padding:0px;border:0px;co=
lor:rgb(125,39,39)">''</span><span class=3D"" style=3D"margin:0px;p=
adding:0px;border:0px;color:rgb(48,51,54)">)</span><span class=3D"" style=
=3D"margin:0px;padding:0px;border:0px;color:rgb(48,51,54)"> </span><span cl=
ass=3D"" style=3D"margin:0px;padding:0px;border:0px;color:rgb(48,51,54)">.<=
/span><span class=3D"" style=3D"margin:0px;padding:0px;border:0px;color:rgb=
(48,51,54)"> </span><span class=3D"" style=3D"margin:0px;padding:0px;border=
:0px;color:rgb(125,39,39)">'://'</span><span class=3D"" style=3D"ma=
rgin:0px;padding:0px;border:0px;color:rgb(48,51,54)"> </span><span class=3D=
"" style=3D"margin:0px;padding:0px;border:0px;color:rgb(48,51,54)">.</span>=
<span class=3D"" style=3D"margin:0px;padding:0px;border:0px;color:rgb(48,51=
,54)"> $this</span><span class=3D"" style=3D"margin:0px;padding:0px;border:=
0px;color:rgb(48,51,54)">-></span><span class=3D"" style=3D"margin:0px;p=
adding:0px;border:0px;color:rgb(48,51,54)">host </span><span class=3D"" sty=
le=3D"margin:0px;padding:0px;border:0px;color:rgb(48,51,54)">.</span><span =
class=3D"" style=3D"margin:0px;padding:0px;border:0px;color:rgb(48,51,54)">=
</span><span class=3D"" style=3D"margin:0px;padding:0px;border:0px;color:r=
gb(125,39,39)">'/INBOX'</span><span class=3D"" style=3D"margin:0px;=
padding:0px;border:0px;color:rgb(48,51,54)">;</span><span class=3D"" style=
=3D"margin:0px;padding:0px;border:0px;color:rgb(48,51,54)">
$ch </span><span class=3D"" style=3D"margin:0px;padding:0px;border:0px;=
color:rgb(48,51,54)">=3D</span><span class=3D"" style=3D"margin:0px;padding=
:0px;border:0px;color:rgb(48,51,54)"> curl_init</span><span class=3D"" styl=
e=3D"margin:0px;padding:0px;border:0px;color:rgb(48,51,54)">();</span><span=
class=3D"" style=3D"margin:0px;padding:0px;border:0px;color:rgb(48,51,54)"=
>
curl_setopt</span><span class=3D"" style=3D"margin:0px;padding:0px;bord=
er:0px;color:rgb(48,51,54)">(</span><span class=3D"" style=3D"margin:0px;pa=
dding:0px;border:0px;color:rgb(48,51,54)">$ch</span><span class=3D"" style=
=3D"margin:0px;padding:0px;border:0px;color:rgb(48,51,54)">,</span><span cl=
ass=3D"" style=3D"margin:0px;padding:0px;border:0px;color:rgb(48,51,54)"> C=
URLOPT_USERPWD</span><span class=3D"" style=3D"margin:0px;padding:0px;borde=
r:0px;color:rgb(48,51,54)">,</span><span class=3D"" style=3D"margin:0px;pad=
ding:0px;border:0px;color:rgb(48,51,54)"> </span><span class=3D"" style=3D"=
margin:0px;padding:0px;border:0px;color:rgb(125,39,39)">"$this->use=
rname:$this->password"</span><span class=3D"" style=3D"margin:0px;p=
adding:0px;border:0px;color:rgb(48,51,54)">);</span><span class=3D"" style=
=3D"margin:0px;padding:0px;border:0px;color:rgb(48,51,54)">
curl_setopt</span><span class=3D"" style=3D"margin:0px;padding:0px;bord=
er:0px;color:rgb(48,51,54)">(</span><span class=3D"" style=3D"margin:0px;pa=
dding:0px;border:0px;color:rgb(48,51,54)">$ch</span><span class=3D"" style=
=3D"margin:0px;padding:0px;border:0px;color:rgb(48,51,54)">,</span><span cl=
ass=3D"" style=3D"margin:0px;padding:0px;border:0px;color:rgb(48,51,54)"> C=
URLOPT_URL</span><span class=3D"" style=3D"margin:0px;padding:0px;border:0p=
x;color:rgb(48,51,54)">,</span><span class=3D"" style=3D"margin:0px;padding=
:0px;border:0px;color:rgb(48,51,54)"> $url</span><span class=3D"" style=3D"=
margin:0px;padding:0px;border:0px;color:rgb(48,51,54)">);</span><span class=
=3D"" style=3D"margin:0px;padding:0px;border:0px;color:rgb(48,51,54)">
curl_setopt</span><span class=3D"" style=3D"margin:0px;padding:0px;bord=
er:0px;color:rgb(48,51,54)">(</span><span class=3D"" style=3D"margin:0px;pa=
dding:0px;border:0px;color:rgb(48,51,54)">$ch</span><span class=3D"" style=
=3D"margin:0px;padding:0px;border:0px;color:rgb(48,51,54)">,</span><span cl=
ass=3D"" style=3D"margin:0px;padding:0px;border:0px;color:rgb(48,51,54)"> C=
URLOPT_PORT</span><span class=3D"" style=3D"margin:0px;padding:0px;border:0=
px;color:rgb(48,51,54)">,</span><span class=3D"" style=3D"margin:0px;paddin=
g:0px;border:0px;color:rgb(48,51,54)"> $this</span><span class=3D"" style=
=3D"margin:0px;padding:0px;border:0px;color:rgb(48,51,54)">-></span><spa=
n class=3D"" style=3D"margin:0px;padding:0px;border:0px;color:rgb(48,51,54)=
">port</span><span class=3D"" style=3D"margin:0px;padding:0px;border:0px;co=
lor:rgb(48,51,54)">);</span><span class=3D"" style=3D"margin:0px;padding:0p=
x;border:0px;color:rgb(48,51,54)">
curl_setopt</span><span class=3D"" style=3D"margin:0px;padding:0px;bord=
er:0px;color:rgb(48,51,54)">(</span><span class=3D"" style=3D"margin:0px;pa=
dding:0px;border:0px;color:rgb(48,51,54)">$ch</span><span class=3D"" style=
=3D"margin:0px;padding:0px;border:0px;color:rgb(48,51,54)">,</span><span cl=
ass=3D"" style=3D"margin:0px;padding:0px;border:0px;color:rgb(48,51,54)"> C=
URLOPT_FOLLOWLOCATION</span><span class=3D"" style=3D"margin:0px;padding:0p=
x;border:0px;color:rgb(48,51,54)">,</span><span class=3D"" style=3D"margin:=
0px;padding:0px;border:0px;color:rgb(48,51,54)"> </span><span class=3D"" st=
yle=3D"margin:0px;padding:0px;border:0px;color:rgb(16,16,148)">true</span><=
span class=3D"" style=3D"margin:0px;padding:0px;border:0px;color:rgb(48,51,=
54)">);</span><span class=3D"" style=3D"margin:0px;padding:0px;border:0px;c=
olor:rgb(48,51,54)">
curl_setopt</span><span class=3D"" style=3D"margin:0px;padding:0px;bord=
er:0px;color:rgb(48,51,54)">(</span><span class=3D"" style=3D"margin:0px;pa=
dding:0px;border:0px;color:rgb(48,51,54)">$ch</span><span class=3D"" style=
=3D"margin:0px;padding:0px;border:0px;color:rgb(48,51,54)">,</span><span cl=
ass=3D"" style=3D"margin:0px;padding:0px;border:0px;color:rgb(48,51,54)"> C=
URLOPT_HEADER</span><span class=3D"" style=3D"margin:0px;padding:0px;border=
:0px;color:rgb(48,51,54)">,</span><span class=3D"" style=3D"margin:0px;padd=
ing:0px;border:0px;color:rgb(48,51,54)"> </span><span class=3D"" style=3D"m=
argin:0px;padding:0px;border:0px;color:rgb(16,16,148)">false</span><span cl=
ass=3D"" style=3D"margin:0px;padding:0px;border:0px;color:rgb(48,51,54)">);=
</span><span class=3D"" style=3D"margin:0px;padding:0px;border:0px;color:rg=
b(48,51,54)">
curl_setopt</span><span class=3D"" style=3D"margin:0px;padding:0px;bord=
er:0px;color:rgb(48,51,54)">(</span><span class=3D"" style=3D"margin:0px;pa=
dding:0px;border:0px;color:rgb(48,51,54)">$ch</span><span class=3D"" style=
=3D"margin:0px;padding:0px;border:0px;color:rgb(48,51,54)">,</span><span cl=
ass=3D"" style=3D"margin:0px;padding:0px;border:0px;color:rgb(48,51,54)"> C=
URLOPT_SSL_VERIFYPEER</span><span class=3D"" style=3D"margin:0px;padding:0p=
x;border:0px;color:rgb(48,51,54)">,</span><span class=3D"" style=3D"margin:=
0px;padding:0px;border:0px;color:rgb(48,51,54)"> </span><span class=3D"" st=
yle=3D"margin:0px;padding:0px;border:0px;color:rgb(16,16,148)">false</span>=
<span class=3D"" style=3D"margin:0px;padding:0px;border:0px;color:rgb(48,51=
,54)">);</span><span class=3D"" style=3D"margin:0px;padding:0px;border:0px;=
color:rgb(48,51,54)">
curl_setopt</span><span class=3D"" style=3D"margin:0px;padding:0px;bord=
er:0px;color:rgb(48,51,54)">(</span><span class=3D"" style=3D"margin:0px;pa=
dding:0px;border:0px;color:rgb(48,51,54)">$ch</span><span class=3D"" style=
=3D"margin:0px;padding:0px;border:0px;color:rgb(48,51,54)">,</span><span cl=
ass=3D"" style=3D"margin:0px;padding:0px;border:0px;color:rgb(48,51,54)"> C=
URLOPT_SSL_VERIFYHOST</span><span class=3D"" style=3D"margin:0px;padding:0p=
x;border:0px;color:rgb(48,51,54)">,</span><span class=3D"" style=3D"margin:=
0px;padding:0px;border:0px;color:rgb(48,51,54)"> </span><span class=3D"" st=
yle=3D"margin:0px;padding:0px;border:0px;color:rgb(16,16,148)">false</span>=
<span class=3D"" style=3D"margin:0px;padding:0px;border:0px;color:rgb(48,51=
,54)">);</span><span class=3D"" style=3D"margin:0px;padding:0px;border:0px;=
color:rgb(48,51,54)">
curl_setopt</span><span class=3D"" style=3D"margin:0px;padding:0px;bord=
er:0px;color:rgb(48,51,54)">(</span><span class=3D"" style=3D"margin:0px;pa=
dding:0px;border:0px;color:rgb(48,51,54)">$ch</span><span class=3D"" style=
=3D"margin:0px;padding:0px;border:0px;color:rgb(48,51,54)">,</span><span cl=
ass=3D"" style=3D"margin:0px;padding:0px;border:0px;color:rgb(48,51,54)"> C=
URLOPT_CONNECTTIMEOUT</span><span class=3D"" style=3D"margin:0px;padding:0p=
x;border:0px;color:rgb(48,51,54)">,</span><span class=3D"" style=3D"margin:=
0px;padding:0px;border:0px;color:rgb(48,51,54)"> $this</span><span class=3D=
"" style=3D"margin:0px;padding:0px;border:0px;color:rgb(48,51,54)">-></s=
pan><span class=3D"" style=3D"margin:0px;padding:0px;border:0px;color:rgb(4=
8,51,54)">timeout</span><span class=3D"" style=3D"margin:0px;padding:0px;bo=
rder:0px;color:rgb(48,51,54)">);</span><span class=3D"" style=3D"margin:0px=
;padding:0px;border:0px;color:rgb(48,51,54)">
curl_setopt</span><span class=3D"" style=3D"margin:0px;padding:0px;bord=
er:0px;color:rgb(48,51,54)">(</span><span class=3D"" style=3D"margin:0px;pa=
dding:0px;border:0px;color:rgb(48,51,54)">$ch</span><span class=3D"" style=
=3D"margin:0px;padding:0px;border:0px;color:rgb(48,51,54)">,</span><span cl=
ass=3D"" style=3D"margin:0px;padding:0px;border:0px;color:rgb(48,51,54)"> C=
URLOPT_TIMEOUT</span><span class=3D"" style=3D"margin:0px;padding:0px;borde=
r:0px;color:rgb(48,51,54)">,</span><span class=3D"" style=3D"margin:0px;pad=
ding:0px;border:0px;color:rgb(48,51,54)"> $this</span><span class=3D"" styl=
e=3D"margin:0px;padding:0px;border:0px;color:rgb(48,51,54)">-></span><sp=
an class=3D"" style=3D"margin:0px;padding:0px;border:0px;color:rgb(48,51,54=
)">timeout</span><span class=3D"" style=3D"margin:0px;padding:0px;border:0p=
x;color:rgb(48,51,54)">);</span><span class=3D"" style=3D"margin:0px;paddin=
g:0px;border:0px;color:rgb(48,51,54)">
$fp </span><span class=3D"" style=3D"margin:0px;padding:0px;border:0px;=
color:rgb(48,51,54)">=3D</span><span class=3D"" style=3D"margin:0px;padding=
:0px;border:0px;color:rgb(48,51,54)"> tmpfile</span><span class=3D"" style=
=3D"margin:0px;padding:0px;border:0px;color:rgb(48,51,54)">();</span><span =
class=3D"" style=3D"margin:0px;padding:0px;border:0px;color:rgb(48,51,54)">
curl_setopt</span><span class=3D"" style=3D"margin:0px;padding:0px;bord=
er:0px;color:rgb(48,51,54)">(</span><span class=3D"" style=3D"margin:0px;pa=
dding:0px;border:0px;color:rgb(48,51,54)">$ch</span><span class=3D"" style=
=3D"margin:0px;padding:0px;border:0px;color:rgb(48,51,54)">,</span><span cl=
ass=3D"" style=3D"margin:0px;padding:0px;border:0px;color:rgb(48,51,54)"> C=
URLOPT_FILE</span><span class=3D"" style=3D"margin:0px;padding:0px;border:0=
px;color:rgb(48,51,54)">,</span><span class=3D"" style=3D"margin:0px;paddin=
g:0px;border:0px;color:rgb(48,51,54)"> $fp</span><span class=3D"" style=3D"=
margin:0px;padding:0px;border:0px;color:rgb(48,51,54)">);</span><span class=
=3D"" style=3D"margin:0px;padding:0px;border:0px;color:rgb(48,51,54)">
curl_setopt</span><span class=3D"" style=3D"margin:0px;padding:0px;bord=
er:0px;color:rgb(48,51,54)">(</span><span class=3D"" style=3D"margin:0px;pa=
dding:0px;border:0px;color:rgb(48,51,54)">$ch</span><span class=3D"" style=
=3D"margin:0px;padding:0px;border:0px;color:rgb(48,51,54)">,</span><span cl=
ass=3D"" style=3D"margin:0px;padding:0px;border:0px;color:rgb(48,51,54)"> C=
URLOPT_VERBOSE</span><span class=3D"" style=3D"margin:0px;padding:0px;borde=
r:0px;color:rgb(48,51,54)">,</span><span class=3D"" style=3D"margin:0px;pad=
ding:0px;border:0px;color:rgb(48,51,54)"> </span><span class=3D"" style=3D"=
margin:0px;padding:0px;border:0px;color:rgb(16,16,148)">true</span><span cl=
ass=3D"" style=3D"margin:0px;padding:0px;border:0px;color:rgb(48,51,54)">);=
</span><span class=3D"" style=3D"margin:0px;padding:0px;border:0px;color:rg=
b(48,51,54)">
$verbose </span><span class=3D"" style=3D"margin:0px;padding:0px;border=
:0px;color:rgb(48,51,54)">=3D</span><span class=3D"" style=3D"margin:0px;pa=
dding:0px;border:0px;color:rgb(48,51,54)"> fopen</span><span class=3D"" sty=
le=3D"margin:0px;padding:0px;border:0px;color:rgb(48,51,54)">(</span><span =
class=3D"" style=3D"margin:0px;padding:0px;border:0px;color:rgb(125,39,39)"=
>'php://temp'</span><span class=3D"" style=3D"margin:0px;padding:0p=
x;border:0px;color:rgb(48,51,54)">,</span><span class=3D"" style=3D"margin:=
0px;padding:0px;border:0px;color:rgb(48,51,54)"> </span><span class=3D"" st=
yle=3D"margin:0px;padding:0px;border:0px;color:rgb(125,39,39)">'w+'=
</span><span class=3D"" style=3D"margin:0px;padding:0px;border:0px;color:rg=
b(48,51,54)">);</span><span class=3D"" style=3D"margin:0px;padding:0px;bord=
er:0px;color:rgb(48,51,54)">
curl_setopt</span><span class=3D"" style=3D"margin:0px;padding:0px;bord=
er:0px;color:rgb(48,51,54)">(</span><span class=3D"" style=3D"margin:0px;pa=
dding:0px;border:0px;color:rgb(48,51,54)">$ch</span><span class=3D"" style=
=3D"margin:0px;padding:0px;border:0px;color:rgb(48,51,54)">,</span><span cl=
ass=3D"" style=3D"margin:0px;padding:0px;border:0px;color:rgb(48,51,54)"> C=
URLOPT_STDERR</span><span class=3D"" style=3D"margin:0px;padding:0px;border=
:0px;color:rgb(48,51,54)">,</span><span class=3D"" style=3D"margin:0px;padd=
ing:0px;border:0px;color:rgb(48,51,54)"> $verbose</span><span class=3D"" st=
yle=3D"margin:0px;padding:0px;border:0px;color:rgb(48,51,54)">);</span><spa=
n class=3D"" style=3D"margin:0px;padding:0px;border:0px;color:rgb(48,51,54)=
">
curl_setopt</span><span class=3D"" style=3D"margin:0px;padding:0px;bord=
er:0px;color:rgb(48,51,54)">(</span><span class=3D"" style=3D"margin:0px;pa=
dding:0px;border:0px;color:rgb(48,51,54)">$ch</span><span class=3D"" style=
=3D"margin:0px;padding:0px;border:0px;color:rgb(48,51,54)">,</span><span cl=
ass=3D"" style=3D"margin:0px;padding:0px;border:0px;color:rgb(48,51,54)"> C=
URLOPT_CUSTOMREQUEST</span><span class=3D"" style=3D"margin:0px;padding:0px=
;border:0px;color:rgb(48,51,54)">,</span><span class=3D"" style=3D"margin:0=
px;padding:0px;border:0px;color:rgb(48,51,54)"> $command</span><span class=
=3D"" style=3D"margin:0px;padding:0px;border:0px;color:rgb(48,51,54)">);</s=
pan><span class=3D"" style=3D"margin:0px;padding:0px;border:0px;color:rgb(4=
8,51,54)">
$res </span><span class=3D"" style=3D"margin:0px;padding:0px;border:0px=
;color:rgb(48,51,54)">=3D</span><span class=3D"" style=3D"margin:0px;paddin=
g:0px;border:0px;color:rgb(48,51,54)"> curl_exec</span><span class=3D"" sty=
le=3D"margin:0px;padding:0px;border:0px;color:rgb(48,51,54)">(</span><span =
class=3D"" style=3D"margin:0px;padding:0px;border:0px;color:rgb(48,51,54)">=
$ch</span><span class=3D"" style=3D"margin:0px;padding:0px;border:0px;color=
:rgb(48,51,54)">);</span><span class=3D"" style=3D"margin:0px;padding:0px;b=
order:0px;color:rgb(48,51,54)">
rewind</span><span class=3D"" style=3D"margin:0px;padding:0px;border:0p=
x;color:rgb(48,51,54)">(</span><span class=3D"" style=3D"margin:0px;padding=
:0px;border:0px;color:rgb(48,51,54)">$verbose</span><span class=3D"" style=
=3D"margin:0px;padding:0px;border:0px;color:rgb(48,51,54)">);</span><span c=
lass=3D"" style=3D"margin:0px;padding:0px;border:0px;color:rgb(48,51,54)">
$verboseLog </span><span class=3D"" style=3D"margin:0px;padding:0px;bor=
der:0px;color:rgb(48,51,54)">=3D</span><span class=3D"" style=3D"margin:0px=
;padding:0px;border:0px;color:rgb(48,51,54)"> stream_get_contents</span><sp=
an class=3D"" style=3D"margin:0px;padding:0px;border:0px;color:rgb(48,51,54=
)">(</span><span class=3D"" style=3D"margin:0px;padding:0px;border:0px;colo=
r:rgb(48,51,54)">$verbose</span><span class=3D"" style=3D"margin:0px;paddin=
g:0px;border:0px;color:rgb(48,51,54)">);</span><span class=3D"" style=3D"ma=
rgin:0px;padding:0px;border:0px;color:rgb(48,51,54)">
echo</span><span class=3D"" style=3D"margin:0px;padding:0px;border:0px;=
color:rgb(48,51,54)">(</span><span class=3D"" style=3D"margin:0px;padding:0=
px;border:0px;color:rgb(48,51,54)">$verboseLog</span><span class=3D"" style=
=3D"margin:0px;padding:0px;border:0px;color:rgb(48,51,54)">);</span><span c=
lass=3D"" style=3D"margin:0px;padding:0px;border:0px;color:rgb(48,51,54)">
fclose</span><span class=3D"" style=3D"margin:0px;padding:0px;border:0p=
x;color:rgb(48,51,54)">(</span><span class=3D"" style=3D"margin:0px;padding=
:0px;border:0px;color:rgb(48,51,54)">$verbose</span><span class=3D"" style=
=3D"margin:0px;padding:0px;border:0px;color:rgb(48,51,54)">);</span><span c=
lass=3D"" style=3D"margin:0px;padding:0px;border:0px;color:rgb(48,51,54)">
</span><span class=3D"" style=3D"margin:0px;padding:0px;border:0px;colo=
r:rgb(16,16,148)">return</span><span class=3D"" style=3D"margin:0px;padding=
:0px;border:0px;color:rgb(48,51,54)"> $res</span><span class=3D"" style=3D"=
margin:0px;padding:0px;border:0px;color:rgb(48,51,54)">;</span><span class=
=3D"" style=3D"margin:0px;padding:0px;border:0px;color:rgb(48,51,54)">
</span><span class=3D"" style=3D"margin:0px;padding:0px;border:0px;colo=
r:rgb(48,51,54)">}</span></code></pre><p style=3D"margin:0px 0px 1em;paddin=
g:0px;border:0px;font-size:15px;clear:both;color:rgb(36,39,41);font-family:=
Arial,"Helvetica Neue",Helvetica,sans-serif;line-height:19.5px">T=
his works:</p><pre class=3D"" style=3D"margin-top:0px;margin-bottom:1em;pad=
ding:5px;border:0px;font-size:13px;width:auto;max-height:600px;overflow:aut=
o;font-family:Consolas,Menlo,Monaco,"Lucida Console","Libera=
tion Mono","DejaVu Sans Mono","Bitstream Vera Sans Mono=
","Courier New",monospace,sans-serif;color:rgb(57,51,24);wor=
d-wrap:normal;background-color:rgb(239,240,241)"><code style=3D"margin:0px;=
padding:0px;border:0px;font-family:Consolas,Menlo,Monaco,"Lucida Conso=
le","Liberation Mono","DejaVu Sans Mono","Bit=
stream Vera Sans Mono","Courier New",monospace,sans-serif;wh=
ite-space:inherit"><span class=3D"" style=3D"margin:0px;padding:0px;border:=
0px;color:rgb(48,51,54)">write</span><span class=3D"" style=3D"margin:0px;p=
adding:0px;border:0px;color:rgb(48,51,54)">(</span><span class=3D"" style=
=3D"margin:0px;padding:0px;border:0px;color:rgb(125,39,39)">'STATUS &qu=
ot;INBOX" (MESSAGES)'</span><span class=3D"" style=3D"margin:0px;p=
adding:0px;border:0px;color:rgb(48,51,54)">);</span></code></pre><p style=
=3D"margin:0px 0px 1em;padding:0px;border:0px;font-size:15px;clear:both;col=
or:rgb(36,39,41);font-family:Arial,"Helvetica Neue",Helvetica,san=
s-serif;line-height:19.5px">This returns empty string (UID is valid - works=
with socket)</p><pre class=3D"" style=3D"margin-top:0px;margin-bottom:1em;=
padding:5px;border:0px;font-size:13px;width:auto;max-height:600px;overflow:=
auto;font-family:Consolas,Menlo,Monaco,"Lucida Console","Lib=
eration Mono","DejaVu Sans Mono","Bitstream Vera Sans M=
ono","Courier New",monospace,sans-serif;color:rgb(57,51,24);=
word-wrap:normal;background-color:rgb(239,240,241)"><code style=3D"margin:0=
px;padding:0px;border:0px;font-family:Consolas,Menlo,Monaco,"Lucida Co=
nsole","Liberation Mono","DejaVu Sans Mono","=
Bitstream Vera Sans Mono","Courier New",monospace,sans-serif=
;white-space:inherit"><span class=3D"" style=3D"margin:0px;padding:0px;bord=
er:0px;color:rgb(48,51,54)">$uid </span><span class=3D"" style=3D"margin:0p=
x;padding:0px;border:0px;color:rgb(48,51,54)">=3D</span><span class=3D"" st=
yle=3D"margin:0px;padding:0px;border:0px;color:rgb(48,51,54)"> </span><span=
class=3D"" style=3D"margin:0px;padding:0px;border:0px;color:rgb(125,39,39)=
">181</span><span class=3D"" style=3D"margin:0px;padding:0px;border:0px;col=
or:rgb(48,51,54)">;</span><span class=3D"" style=3D"margin:0px;padding:0px;=
border:0px;color:rgb(48,51,54)">
write</span><span class=3D"" style=3D"margin:0px;padding:0px;border:0px;col=
or:rgb(48,51,54)">(</span><span class=3D"" style=3D"margin:0px;padding:0px;=
border:0px;color:rgb(125,39,39)">'UID FETCH '</span><span class=3D"=
" style=3D"margin:0px;padding:0px;border:0px;color:rgb(48,51,54)"> </span><=
span class=3D"" style=3D"margin:0px;padding:0px;border:0px;color:rgb(48,51,=
54)">.</span><span class=3D"" style=3D"margin:0px;padding:0px;border:0px;co=
lor:rgb(48,51,54)"> $uid </span><span class=3D"" style=3D"margin:0px;paddin=
g:0px;border:0px;color:rgb(48,51,54)">.</span><span class=3D"" style=3D"mar=
gin:0px;padding:0px;border:0px;color:rgb(48,51,54)"> </span><span class=3D"=
" style=3D"margin:0px;padding:0px;border:0px;color:rgb(125,39,39)">' (B=
ODY[])'</span><span class=3D"" style=3D"margin:0px;padding:0px;border:0=
px;color:rgb(48,51,54)">);</span></code></pre><p style=3D"margin:0px 0px 1e=
m;padding:0px;border:0px;font-size:15px;clear:both;color:rgb(36,39,41);font=
-family:Arial,"Helvetica Neue",Helvetica,sans-serif;line-height:1=
9.5px">Is there is bug in the curl IMAP implementation? I've tested wit=
h curl 7.30.0 and 7.35.0</p><p style=3D"margin:0px 0px 1em;padding:0px;bord=
er:0px;font-size:15px;clear:both;color:rgb(36,39,41);font-family:Arial,&quo=
t;Helvetica Neue",Helvetica,sans-serif;line-height:19.5px"><br></p><p =
style=3D"margin:0px 0px 1em;padding:0px;border:0px;clear:both"><font color=
=3D"#242729" face=3D"Arial, Helvetica Neue, Helvetica, sans-serif"><span st=
yle=3D"font-size:15px;line-height:19.5px"><a href=3D"http://stackoverflow.c=
om/questions/37870022/php-curl-not-returning-data-in-all-cases">http://stac=
koverflow.com/questions/37870022/php-curl-not-returning-data-in-all-cases</=
a></span></font><br></p></div>
--94eb2c062470f1574c053580336d--
--===============0071689407==
Content-Type: text/plain; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: base64
Content-Disposition: inline
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KaHR0cDovL2Nv
b2wuaGF4eC5zZS9jZ2ktYmluL21haWxtYW4vbGlzdGluZm8vY3VybC1hbmQtcGhwCg==
--===============0071689407==--