| | |
| | | $result = false; |
| | | $parts = (array) $parts; |
| | | $key = $this->nextTag(); |
| | | $peeks = ''; |
| | | $idx = 0; |
| | | $peeks = array(); |
| | | $type = $mime ? 'MIME' : 'HEADER'; |
| | | |
| | | // format request |
| | |
| | | |
| | | do { |
| | | $line = $this->readLine(1024); |
| | | $line = $this->multLine($line); |
| | | |
| | | if (preg_match('/BODY\[([0-9\.]+)\.'.$type.'\]/', $line, $matches)) { |
| | | if (preg_match('/^\* [0-9]+ FETCH [0-9UID( ]+BODY\[([0-9\.]+)\.'.$type.'\]/', $line, $matches)) { |
| | | $idx = $matches[1]; |
| | | $result[$idx] = preg_replace('/^(\* [0-9]+ FETCH \()?\s*BODY\['.$idx.'\.'.$type.'\]\s+/', '', $line); |
| | | $result[$idx] = trim($result[$idx], '"'); |
| | | $result[$idx] = rtrim($result[$idx], "\t\r\n\0\x0B"); |
| | | $headers = ''; |
| | | |
| | | // get complete entry |
| | | if (preg_match('/\{([0-9]+)\}\r\n$/', $line, $m)) { |
| | | $bytes = $m[1]; |
| | | $out = ''; |
| | | |
| | | while (strlen($out) < $bytes) { |
| | | $out = $this->readBytes($bytes); |
| | | if ($out === null) |
| | | break; |
| | | $headers .= $out; |
| | | } |
| | | } |
| | | |
| | | $result[$idx] = trim($headers); |
| | | } |
| | | } while (!$this->startsWith($line, $key, true)); |
| | | |