<?php
class email
{
var $header;
var $to;
var $subject;
var $body;
var $error;
var $boundary;
var $attachment;
function email($to = "", $from = "", $subject = "", $body = "")
{
$this->checkMail($to);
$this->checkMail($from);
$this->to = $to;
$this->subject = $subject;
$this->body = $body;
$this->addHeader("From: " . $from);
$this->error = array();
}
function LoadAttachment($tmpfile, $filename = "file.zip")
{
if (!is_file($tmpfile)) $this->error("Cannot open temporary File.");
$this->attachment = chunk_split(base64_encode(fread(fopen($tmpfile, "r"), filesize($tmpfile))));
$this->addAttachment($filename);
}
function addAttachment($filename)
{
$this->boundary = md5(uniqid(microtime()));
$this->addHeader("MIME-Version: 1.0");
$this->addHeader("Content-Type: multipart/mixed; boundary=" . $this->boundary . "\n");
$this->addHeader("--" . $this->boundary);
$this->addHeader("Content-Type: text/plain");
$this->addHeader("Content-Transfer-Encoding: 8bit");
$this->addHeader($this->body);
$this->addHeader("--" . $this->boundary);
$this->addHeader("Content-Type: application/x-zip-compressed; name=\"" . $filename . "\"");
$this->addHeader("Content-Transfer-Encoding: base64");
$this->addHeader("Content-Disposition: attachment; filename=\"" . $filename . "\"");
$this->addHeader($this->attachment);
$this->addHeader("--" . $this->boundary);
}
function checkMail($email)
{
if (!preg_match("/^[-_.[:alnum:]]+@((([[:alnum:]]|[[:alnum:]][[:alnum:]-]*[[:alnum:]])\.)+([a-zA-Z]{2,3})|(([0-9][0-9]?|[0-1][0-9][0-9]|[2][0-4][0-9]|[2][5][0-5])\.){3}([0-9][0-9]?|[0-1][0-9][0-9]|[2][0-4][0-9]|[2][5][0-5]))$/i", $email)) {
$this->error("The E-Mail-Address \"" . $email . "\" is invalid.");
}
}
function addHeader($in)
{
$this->header .= $in . "\n";
}
function error($msg)
{
$this->error[] = $msg;
}
function drawError()
{
if (is_array($this->error)) {
$errstr = "<ul>";
foreach($this->error as $key => $val) {
$errstr .= "<li>" . $val . "</li>";
}
$errstr .= "</ul>";
} else {
$errstr = "<ul><li>" . $this->error . "</li></ul>";
}
return $errstr;
}
function send()
{
if (sizeof($this->error()) > 0) {
die($this->drawError());
} else {
mail($this->to, $this->subject, $this->body, $this->header);
}
}
}
?>