*/
/* Usage
include "mail_mine.php";
// - Create object
$mymail = new mail_mine();
// - Addresses
$mymail->to_mine = "ivanm@security-net.biz";
$mymail->cc_mine = "test-cc@gmail.com";
$mymail->bcc_mine = "!test-bcc@gmail.com";
$mymail->from_mine = "test@gmail.com";
$mymail->replyto_mine = "no-reply@gmail.com";
// - Adds
$mymail->subject_mine = "test smtp object";
$mymail->message_mine = "Lorem ipsum dolor sit amet, consectetur adipisicing elit, ...";
// - Options
$mymail->htmlemail = true;
$mymail->haveattach = false;
// - Functions
$mymail->send_mail();
$mymail->error_machine(1);
if($mymail->debug_mine === true && $mymail->error_mine == "") {
echo "Ok, mail is sent.";
} else {
echo "Error!";
}
*/
class mail_mine {
var $to_mine = ""; // send to
var $cc_mine = ""; // cc
var $bcc_mine = ""; // bcc
var $subject_mine = ""; // subject
var $message_mine = ""; // message
var $from_mine = ""; // from
var $replyto_mine = ""; // reply to
var $htmlemail = false; // html email
var $haveattach = false; // attachment
var $debug_mine = ""; // error output
var $error_mine = ""; // error handler
var $headers_mine = ""; // headers param
var $not_valid_mails = array(); // Not valid email address
var $attachments = array(); // Atachments
var $not_valid_attachments = array(); // Not valid email atachments
// Constructor
function mail_mine() {
}
// Check this
function check_this() {
$mails = array("to_mine" => "$this->to_mine", "cc_mine" => "$this->cc_mine", "bcc_mine" => "$this->bcc_mine",
"from_mine" => "$this->from_mine", "replyto_mine" => "$this->replyto_mine");
$regexp_email = "^([_a-z0-9-]+)(\.[_a-z0-9-]+)*@([a-z0-9-]+)(\.[a-z0-9-]+)*(\.[a-z]{2,4})$";
foreach ($mails as $mails_key => $mails_val) {
if (strstr($mails_val,",")) {
// If more than one mail (must be separated by coma)
$mails_plus = explode (",",$mails_val);
foreach ($mails_plus as $mpk => $mpv) {
if ($mails_key == "to_mine" && !eregi($regexp_email, $mpv)) {
$this->error_mine .= "'To' field is not valid.
";
break;
}
if (!eregi($regexp_email, $mpv)) {
array_push($this->not_valid_mails, $mails_key);
}
}
} else {
if ($mails_key == "to_mine" && $mails_val == "") {
$this->error_mine .= "'To' field is empty.
";
break;
} elseif ( $mails_key == "to_mine" && !eregi($regexp_email, $mails_val) ) {
$this->error_mine .= "'To' field is not valid.
";
break;
} else {
if (!eregi($regexp_email, $mails_val)) {
array_push($this->not_valid_mails, $mails_key);
}
}
}
}
}
// Headers creator
function mail_header() {
$cc_minez = "cc: " . $this->cc_mine . "\n";
$bcc_minez = "Bcc: " . $this->bcc_mine . "\n";
$from_minez = 'From: '. $this->from_mine . "\n";
$replyto_minez = 'Reply-To: '. $this->replyto_mine . "\n" .
$mailsxx = array("cc_mine" => "$this->cc_mine", "bcc_mine" => "$this->bcc_mine",
"from_mine" => "$this->from_mine", "replyto_mine" => "$this->replyto_mine");
foreach ($mailsxx as $mails_key => $mails_val) {
if ( !in_array($mails_key, $this->not_valid_mails) ) {
$this->headers_mine .= ${$mails_key . "z"};
}
}
if ( $this->htmlemail === true && $this->haveattach === false) {
$this->headers_mine .= "MIME-Version: 1.0\n" .
"Content-type: text/html; charset=utf-8\n";
}
// + Attach
if ( $this->haveattach === true ) {
// Generate a boundary string
$semi_rand = md5(time());
$mime_boundary = '------------'.$semi_rand;
// Add the headers for a file attachment
$this->headers_mine .= "MIME-Version: 1.0\n" .
"Content-Type: multipart/mixed;\n" .
" boundary=\"{$mime_boundary}\"";
// Add a multipart boundary above the message
$this->message_mine = "" .
"--{$mime_boundary}\n" .
"Content-Type: text/html; charset=\"utf-8\"\n" .
"Content-Transfer-Encoding: 7bit\n\n" .
$this->message_mine . "\n\n";
foreach ($this->attachments as $keya => $vala) {
// Read the file to be attached ('rb' = read binary)
if (file_exists($vala)) {
$file = fopen($vala,'rb');
$data = fread($file,filesize($vala));
fclose($file);
$fileatt_type = mime_content_type($vala);
// Base64 encode the file data
$data = chunk_split(base64_encode($data));
// Add file attachment to the message
$this->message_mine .= "--{$mime_boundary}\n" .
"Content-Type: {$fileatt_type};\n" .
" name=\"".basename($vala)."\"\n" .
"Content-Disposition: inline;\n" .
" filename=\"".basename($vala)."\"\n" .
"Content-Transfer-Encoding: base64\n\n" .
$data . "" .
"--{$mime_boundary}\n\n";
} else {
array_push($this->not_valid_attachments,$vala);
}
}
}
// X mailer
// $this->headers_mine .= "X-Mailer: PHP " . phpversion() . "\n";
}
// Send mail
function send_mail() {
$this->check_this();
$this->mail_header();
if ($this->error_mine == "" ) {
$ret_mine = mail($this->to_mine,$this->subject_mine,$this->message_mine,$this->headers_mine);
$this->debug_mine = $ret_mine;
}
}
// Debug
function error_machine($swr = 0) {
if ($swr == 1) {
echo "\n\n";
// print_r ($this->headers_mine);
}
}
}
?>