header = new Pop3Header($header); $this->hasAttachments = 0; $this->from = $this->header->getHeader('from'); $this->subject = $this->header->getHeader('subject'); $this->to = $this->header->getHeader('to'); $this->date = $this->header->getHeader('date'); $this->bcc = $this->header->getHeader('bcc'); $this->cc = $this->header->getHeader('cc'); $this->unixTimeStamp = strtotime($this->date); } function getTextMessage() { if ($this->hasPlainText) { return $this->plainText; } else if ($this->hasHtml) { $string = str_replace("

","

", $this->htmlText); return strip_tags($string, '

'); } } function getHtmlMessage() { return ($this->hasHtml)?str_replace ("\n", " ", $this->htmlText):$this->plainText; } function _parseEmail($header,$message) { $header = ($header != null)?$header:$this->header->_headerArray; $content_transfer_encoding = (array_key_exists("content-transfer-encoding", $header))? strtolower(trim($header["content-transfer-encoding"])):"8bit"; /* if ($content_transfer_encoding == "") { $content_transfer_encoding = "8bit"; }*/ $message = $this->_textDecode($content_transfer_encoding, $message); $content_type = split(";", $header["content-type"], 2); for($i = 0; $i < count($content_type); $i++) $content_type[$i] = trim($content_type[$i]); if ($content_type[0]=="") $content_type[0]="text/plain"; if (stristr($content_type[0],"multipart/") || stristr($content_type[0],"message/")) { $content_type[0] = "multipart"; } if (array_key_exists("content-disposition", $header) && !stristr($header["content-disposition"],"inline")) { if ($header) { $this->hasAttachments = true; $this->attachments[] = new Pop3Attachment(array("header" => $header, "content" => @implode("\n",$message))); } } else { switch(trim(strtolower($content_type[0]))) { case "text/plain": $message = nl2br(htmlentities(implode("\n",$message), ENT_QUOTES, "iso-8859-1")); $this->hasPlainText = true; if (trim($message)) $this->plainText = $message; break; case "text/html": $this->htmlText = implode("\n", $message); $this->hasHtml = true; break; case "multipart": $content_type[1]=split(";",$content_type[1]); foreach ($content_type[1] as $ct_pars) { if (stristr($ct_pars, "boundary")) { $ct_pars = split("=",trim($ct_pars),2); if (strtolower($ct_pars[0]) == "boundary") $boundary = str_replace("\"", "", $ct_pars[1]); } } if($boundary) { $parts = $this->_splitMultipart($boundary, $message); foreach($parts as $part) $this->_parsePart($part); } else { //Can't read } break; default: if($header) { $this->hasAttachments = true; $this->attachments[] = new Pop3Attachment(array("header" => $header, "content" => @implode("\n",$message))); } break; } } } function _textDecode($encoding, $text) { switch($encoding) { case "quoted-printable": $dec_text = explode("\n",quoted_printable_decode(implode("\n",$text))); break; case "base64": for($i = 0; $i < count($text); $i++) $text[$i] = trim($text[$i]); $dec_text = explode("\n",base64_decode(@implode("",$text))); break; case "7bit": case "8bit": case "binary": default: $dec_text = $text; break; } return $dec_text; } function _splitMultipart($boundary, $text) { $parts = array(); $tmp = array(); foreach($text as $line) { if (strstr($line,"--$boundary")) { $parts[]=$tmp; $tmp=array(); } else $tmp[]=$line; } for($i=0;$i_parseEmail($this->header->__parseHeader($headerpart),explode("\n",trim(implode("\n",$contentpart)))); } } ?>