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,&quot;Helvetica=
 Neue&quot;,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,&quot;Helv=
etica Neue&quot;,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&#39;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&#39;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&quot;,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,&quot;Lucida Console&quot;,&quot;Liberation Mono&quot;=
,&quot;DejaVu Sans Mono&quot;,&quot;Bitstream Vera Sans Mono&quot;,&quot;Co=
urier New&quot;,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,&quot;Lucida Console&quot;,&quot;=
Liberation Mono&quot;,&quot;DejaVu Sans Mono&quot;,&quot;Bitstream Vera San=
s Mono&quot;,&quot;Courier New&quot;,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)">-&gt;</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)">&#39;imap&#39;</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&#39;</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)">&#39=
;pop3&#39;</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)">-&gt;</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)">&#39;s&#39;</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)">&#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)">&#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)">-&gt;</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)">&#39;/INBOX&#39;</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)">&quot;$this-&gt;use=
rname:$this-&gt;password&quot;</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)">-&gt;</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)">-&gt;</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)">-&gt;</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)"=
>&#39;php://temp&#39;</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)">&#39;w+&#39;=
</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,&quot;Helvetica Neue&quot;,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,&quot;Lucida Console&quot;,&quot;Libera=
tion Mono&quot;,&quot;DejaVu Sans Mono&quot;,&quot;Bitstream Vera Sans Mono=
&quot;,&quot;Courier New&quot;,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,&quot;Lucida Conso=
le&quot;,&quot;Liberation Mono&quot;,&quot;DejaVu Sans Mono&quot;,&quot;Bit=
stream Vera Sans Mono&quot;,&quot;Courier New&quot;,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)">&#39;STATUS &qu=
ot;INBOX&quot; (MESSAGES)&#39;</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,&quot;Helvetica Neue&quot;,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,&quot;Lucida Console&quot;,&quot;Lib=
eration Mono&quot;,&quot;DejaVu Sans Mono&quot;,&quot;Bitstream Vera Sans M=
ono&quot;,&quot;Courier New&quot;,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,&quot;Lucida Co=
nsole&quot;,&quot;Liberation Mono&quot;,&quot;DejaVu Sans Mono&quot;,&quot;=
Bitstream Vera Sans Mono&quot;,&quot;Courier New&quot;,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)">&#39;UID FETCH &#39;</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)">&#39; (B=
ODY[])&#39;</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,&quot;Helvetica Neue&quot;,Helvetica,sans-serif;line-height:1=
9.5px">Is there is bug in the curl IMAP implementation? I&#39;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&quot;,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==--