Beispiel #1
0
 function getStructurePart($ret, $return, $key_prefix, $level)
 {
     foreach ($ret as $key => $ret_elem) {
         if (is_array($ret_elem) and !is_array($ret_elem[0])) {
             if (strtolower($ret_elem[0]) == "boundary") {
                 continue;
             }
             if (isset($ret_elem[2]) and !is_array($ret_elem[2]) and strtolower($ret_elem[2]) == "boundary") {
                 continue;
             }
             $id = $key_prefix . ($key + 1);
             $type = "text/plain";
             if (!empty($ret_elem[1]) and $ret_elem[1] != "NIL") {
                 $type = strtolower($ret_elem[0] . "/" . $ret_elem[1]);
             }
             $name = str_replace(".", "_", $id) . "_" . strtolower($ret_elem[0]) . "." . str_replace("plain", "txt", strtolower($ret_elem[1]));
             if (!empty($ret_elem[3]) and $ret_elem[3] != "NIL") {
                 $cid = trim($ret_elem[3], "<>");
             } else {
                 $cid = "";
             }
             if (!empty($ret_elem[2][0]) and strtolower($ret_elem[2][0]) == "name") {
                 $name = $ret_elem[2][1];
             }
             if (isset($ret_elem[9]) and $ret_elem[8] == "NIL") {
                 $ret_elem[8] = $ret_elem[9];
             }
             if (!empty($ret_elem[8][0][0]) and strtolower($ret_elem[8][1][0]) == "filename") {
                 $name = $ret_elem[8][1][1];
             }
             if (!isset($ret_elem[6])) {
                 continue;
             }
             $return[] = array("id" => $id, "level" => $level, "contenttype" => strtolower($type), "encoding" => strtolower($ret_elem[5]), "charset" => (!empty($ret_elem[2][0]) and strtolower($ret_elem[2][0]) == "charset") ? strtolower($ret_elem[2][1]) : "", "size" => $ret_elem[6], "name" => modify::decode_subject($name), "disposition" => (isset($ret_elem[8]) and is_array($ret_elem[8]) and !is_array($ret_elem[8][0])) ? $ret_elem[8][0] : "", "cid" => $cid);
             $last_id = count($return) - 1;
             if (strtolower($return[$last_id]["contenttype"]) == "text/calendar") {
                 $return[$last_id]["disposition"] = "attachment";
                 if (empty($return[$last_id]["name"])) {
                     $return[$last_id]["name"] = "appointment.ics";
                 }
             }
             if ($type == "message/rfc822" and is_array($ret_elem[8])) {
                 $return[$last_id]["level"]++;
                 if (!is_array($ret_elem[8][0])) {
                     $ret_elem[8] = array($ret_elem[8]);
                 }
                 $return = $this->getStructurePart($ret_elem[8], $return, $id . ".", $level + 1);
             }
         } else {
             if (is_array($ret_elem)) {
                 $id = $key_prefix . ($key + 1);
                 $return = $this->getStructurePart($ret_elem, $return, $id . ".", $level);
             }
         }
     }
     return $return;
 }
Beispiel #2
0
 /**
  * Returns the  headers of the specified message in an
  * associative array. Array keys are the header names, array
  * values are the header values. In the case of multiple headers
  * having the same names, eg Received:, the array value will be
  * an indexed array of all the header values.
  *
  * @param  integer $msg_id Message number
  * @return mixed   Either array of headers or false on error
  */
 function getParsedHeaders($msg_id)
 {
     $headers = array();
     if ($this->_state == NET_POP3_STATE_TRANSACTION) {
         $raw_headers = rtrim($this->getRawHeaders($msg_id));
         $raw_headers = preg_replace("/\r\n[ \t]+/", ' ', $raw_headers);
         // Unfold headers
         $raw_headers = explode("\r\n", $raw_headers);
         foreach ($raw_headers as $value) {
             $name = strtolower(substr($value, 0, $pos = strpos($value, ':')));
             $value = ltrim(substr($value, $pos + 1));
             if ($name == "subject" or $name == "to" or $name == "from") {
                 $value = modify::decode_subject($value);
             }
             if (isset($headers[$name]) and is_array($headers[$name])) {
                 $headers[$name][] = $value;
             } elseif (isset($headers[$name])) {
                 $headers[$name] = array($headers[$name], $value);
             } else {
                 $headers[$name] = $value;
             }
         }
         return $headers;
     }
     return false;
 }
Beispiel #3
0
 private static function _drawheader($headers)
 {
     $content = "Subject: " . modify::decode_subject($headers["subject"]) . "\n";
     $content .= "Date: " . $headers["date"] . "\n";
     $content .= "From: " . modify::decode_subject($headers["from"]) . "\n";
     $content .= "To: " . modify::decode_subject($headers["to"]) . "\n";
     return $content;
 }