From 0a97a039c4b35223ab8d23684185ae526c1bca2a Mon Sep 17 00:00:00 2001 From: alecpl Date: Thu, 17 Apr 2008 07:01:03 +0000 Subject: - Fix IMAP response in message body when message has no body (#1484964) --- program/lib/imap.inc | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) (limited to 'program') 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, '}'); -- cgit v1.2.3