2008-12-10 14:33:43 +01:00
|
|
|
<?php
|
|
|
|
/**
|
|
|
|
* MailEngine class
|
|
|
|
* @author Brian Wong <bwsource@users.sourceforge.net>
|
|
|
|
* @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
|
|
|
|
*/
|
2016-02-04 17:03:27 +01:00
|
|
|
include_once('lib/CmnFns.class.php');
|
2008-12-10 14:33:43 +01:00
|
|
|
/**
|
|
|
|
* 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');
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|