* @version 04-02-07 * @package MailEngine * * Copyright (C) 2003 - 2007 MailZu * License: GPL, see LICENSE */ /** * Base directory of application */ @define('BASE_DIR', dirname(__FILE__) . '/..'); /** * CmnFns class */ include_once('lib/CmnFns.class.php'); /** * Pear::DB */ if ($GLOBALS['conf']['app']['safeMode']) { ini_set('include_path', ( dirname(__FILE__) . '/pear/' . PATH_SEPARATOR . ini_get('include_path') )); include_once('pear/PEAR.php'); include_once('pear/Mail/mimeDecode.php'); } else { include_once 'PEAR.php'; include_once('Mail/mimeDecode.php'); } /** * Provide all mail access/manipulation functionality */ class MailEngine { var $raw; // Raw mail contents var $struct; // The top-level MIME structure var $recipient; // The recipient of the email var $msg_found; // Msg found in database var $msg_error; // Msg has MIME error var $last_error; // PEAR Error Messages /** * MailEngine object constructor * $param string The unique mail_id * $param string The mail addr of the reader * $return object MailEngine object */ function MailEngine($mail_id, $recip) { $this->recipient = $recip; $this->getRawContent($mail_id); $this->msg_error = false; if ($this->raw) { $this->msg_found = true; $this->struct = $this->getDecodedStruct($this->raw); if (PEAR::isError($this->struct)) { $this->msg_error = true; $this->last_error = $this->struct->getMessage(); } } else { $this->msg_found = false; } return $this->struct; } /** * Decode the raw contents to get the MIME structure * $param string The complete raw message returned by get_raw_mail * $return object Mail_mimeDecode::decode object */ function getDecodedStruct($contents) { $message = new Mail_mimeDecode($contents); $msg_struct = $message->decode( array ( 'include_bodies' => true, 'decode_bodies' => true, 'decode_headers' => true) ); return $msg_struct; } /** * Get the raw content through a DB call * $param string The unique mail_id * $return string The complete raw email */ function getRawContent($mail_id) { $db = new DBEngine(); $this->raw = $db->get_raw_mail($mail_id, $this->recipient); // Mark read if (in_array($this->recipient, $_SESSION['sessionMail']) && $this->raw) { $db->update_msgrcpt_rs($mail_id,$this->recipient,'v'); } } }