diff options
Diffstat (limited to 'program/lib/imap.inc')
-rw-r--r-- | program/lib/imap.inc | 23 |
1 files changed, 14 insertions, 9 deletions
diff --git a/program/lib/imap.inc b/program/lib/imap.inc index 5c15353f5..918e71a18 100644 --- a/program/lib/imap.inc +++ b/program/lib/imap.inc @@ -2332,17 +2332,22 @@ function iil_C_HandlePartBody(&$conn, $mailbox, $id, $part, $mode) { $len = strlen($line); if ($line[$len-1] == ')') { //one line response, get everything between first and last quotes - $from = strpos($line, '"') + 1; - $to = strrpos($line, '"'); - $len = $to - $from; - if ($mode == 1) { - $result = substr($line, $from, $len); - } else if ($mode == 2) { - echo substr($line, $from, $len); + if (substr($line, -4, 3) == 'NIL') { + // NIL response + $result = ''; + } else { + $from = strpos($line, '"') + 1; + $to = strrpos($line, '"'); + $len = $to - $from; + $result = substr($line, $from, $len); + } + + if ($mode == 2) { + echo $result; } else if ($mode == 3) { - echo base64_decode(substr($line, $from, $len)); + echo base64_decode($result); } - }else if ($line[$len-1] == '}') { + } else if ($line[$len-1] == '}') { //multi-line request, find sizes of content and receive that many bytes $from = strpos($line, '{') + 1; $to = strrpos($line, '}'); |