/**
* @desc
*
* @version 0.9
* @author james // queen-site
*/
class Mailer{
/** @var style A változó tartalmazza az emailhez használt stíluslap elérési útját (relatív, pl: Static/Email/Style.css) */
public $style;
/** @var cimzett A változóba kerül a címzett email címe */
public $cimzett;
/** @var felado_nev Ide kerül a feladó neve, alapesetben a define-olt RENDSZER_EMAIL_NEV-et használja */
public $felado_nev;
/** @var felado_email Ide kerül a feladó címe, alapesetben a define-olt RENDSZER_EMAIL_CIM-et használja */
public $felado_email;
/** @var subject A kiküldendő email tárgya */
public $subject;
/** @var uzenet A kiküldendő mail szövege */
public $uzenet;
/** @var attached_images Tömb, ez tartalmazza a kiküldendő emailhez csatolt képeket */
public $attached_images;
/** @var boundary */
private $boundary;
/** @var header */
private $header;
/** @var tmp */
private $tmp;
/** @var email_id A változó tartalmazza a kiküldendő email id-jét, a trace-eléshez elengedhetetlen! */
private $email_id;
/** @var mail_cache Ha a változó true (alapértelmezés), akkor létezik mail cache, eltárolja a kiküldött maileket ! */
public $mail_cache;
/** @var mail_store Ha a változó true (alapértelmezés), akkor létezik mail cache, eltárolja a kiküldött maileket ! */
public $mail_trace;
/** @var success A változó tartalmazza a send() függyvény hívása után a sikeresen elküldött emaileket */
public $success;
/** @var fail A változó tartalmazza a send() függyvény hívása után a sikertelen emaileket */
public $fail;
/**
* @desc
*
* @param string $subject Ez tartalmazza az üzenet címét. Ha indításkor nincs megadva, akkor később kell megadni $mailer->subject módon
* @param string $uzenet Ez tartalmazza az üzenetet. Ha indításkor nincs megadva, akkor később kell megadni $mailer->uzenet módon
* @param string $style Ez tartalmazza az üzenet stílusát. Ha indításkor nincs megadva, akkor később kell megadni $mailer->style módon
*/
function __construct($subject = '', $uzenet = '', $style = '' ){
if($subject != ''){
$this->subject = $subject;
}
if($uzenet != ''){
$this->uzenet = $uzenet;
}
if($style != ''){
$this->style = $style;
}
$this->mail_cache = false;
$this->mail_trace = false;
$this->felado_nev = RENDSZER_EMAIL_NEV;
$this->felado_email = RENDSZER_EMAIL_CIM;
$this->boundary(5);
}
/**
* @desc
* @version
* @author james // queensite
*/
private function boundary($number = ''){
$this->tmp = explode("@", $this->felado_email);
$this->boundary = $this->tmp[0]."-".md5(time());
$this->boundary2 = $this->tmp[0]."-".md5(time());
}
/**
* @desc
* @version
* @author james // queensite
*/
public function message_processor(){
$this->subject = "=?UTF-8?B?".base64_encode($this->subject)."?=";
$this->head();
if(count($this->personal_elements)){
foreach($this->personal_elements AS $index => $element){
$this->personal_elements[$index] = '['.$element.']';
}
}
$this->uzenet = str_replace($this->personal_elements, $this->personal_array, $this->uzenet);
if(count($this->attached_images)){
foreach($this->attached_images AS $index => $image){
$this->uzenet = str_replace($image, 'cid:image'.$index, $this->uzenet);
}
}
}
/**
* @desc
* @version
* @author james // queensite
*/
public function send($cimzett = ''){
if($this->mail_trace == true){
$this->store_mail();
$this->trace();
//$this->message = str_replace('{trace_track}', '
email_id.'\" alt=\"\" width=\"1\" height=\"1\" />', $this->message);
}
/*
mail("kruskaroland@gmail.com",
"TESZT",
"TESZT",
"From: SMTP <".$this->felado_email.">" ."\r\n".
"CC: Teszt " ."\r\n".
"BCC: Teszt2 " ."\r\n".
"Reply-To: Teszt3 " ."\r\n"
);*/
if( mail($this->cimzett, $this->subject, $this->message,"From: ".$this->felado_nev." <".$this->felado_email.">"."\r\n". $this->header) ) {
$this->success++;
}
else {
$this->fail++;
}
}
/**
* @desc
* @version
* @author james // queensite
*/
private function store_mail(){
unset($this->email_id);
$db = new Dbase('insert', 'email_cache');
$db->elemek = array(
'cimzett' => $this->cimzett,
'subject' => $this->subject,
'message' => $this->message,
);
$db->sql();
$this->email_id = $db->id;
}
/**
* @desc
* @version
* @author james // queensite
*/
private function trace(){
$db = new Dbase('insert', 'email_statusz');
$db->elemek = array('email_id' => $this->email_id);
$db->sql();
}
/**
* @desc
* @version
* @author james // queensite
*/
public function header(){
if(!$this->reply_email){
$this->reply_email = $this->felado_email;
}
$this->header =
"From: \"=?UTF-8?B?".base64_encode($this->felado_nev)."?=\" <".$this->felado_email.">
Date: ".date('r')."
Reply-To: ".$this->reply_email."
Message-ID: <".$this->boundary."_".$this->felado_email.">
MIME-Version: 1.0
Content-Type: multipart/related; boundary=\"==".$this->boundary."\"
This is a MIME message. If you are reading this text, you
might want to consider changing to a mail reader that
understands how to properly display MIME multipart messages.
--==".$this->boundary."
Content-Type: text/html; charset=utf-8
Content-Transfer-Encoding: 8bit
";
}
/**
* @desc
* @version
* @author james // queensite
*/
public function body(){}
/**
* @desc
* @version
* @author james // queensite
*/
private function head(){
if($this->style){
$style = file_get_contents($this->style);
}
$this->head = '
'.$this->subject.'
';
}
/**
* @desc
* @version
* @author james // queensite
*/
public function message(){
global $host_name;
if($this->sablon == "yes"){
$this->message .=
"
".$this->head."
 |
".$this->uzenet." |
 |
\r\n";
}else{
$this->message .=
"
".$this->head."
".$this->uzenet."
\r\n";
}
if(count($this->attached_images)){
foreach ($this->attached_images AS $index => $image){
$filename = explode ("/",$image);
$filename = $filename[count($filename)-1];
$data = chunk_split(base64_encode(file_get_contents($image)));
$this->message .=
'
--=='.$this->boundary.'
Content-Type: image/jpeg
Content-ID:
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="'.$filename.'"
'.$data;
}
}
/**
* @desc html rész
*/
$html_message = explode('.', strip_tags($this->uzenet));
$html_message = implode('.\r\n', $html_message);
$this->message .= '
--=='.$this->boundary.'--
';
}
}
?>