diff options
author | alecpl <alec@alec.pl> | 2008-04-17 07:01:03 +0000 |
---|---|---|
committer | alecpl <alec@alec.pl> | 2008-04-17 07:01:03 +0000 |
commit | 0a97a039c4b35223ab8d23684185ae526c1bca2a (patch) | |
tree | d403afadd5a2b35df55018c85e557e200213f499 /program | |
parent | 140d6e90638752a6d14738fcaa891fc3a7cd81fd (diff) |
- Fix IMAP response in message body when message has no body (#1484964)
Diffstat (limited to 'program')
-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, '}'); |