boundary = uniqid(time()); } // This function will send the email public function send() { $this->build_header(); return mail($this->to, $this->subject, $this->message, $this->header); } // This function will add a to recipient to the email message public function to($email, $name = null) { // Check if the email is valid before adding it if(!$this->validate($email)) { return false; } if($name == null) { $this->to = $email; } else { $this->to = $name." <".$email.">"; } return true; } // This function will add a to sender to the email message public function from($email, $name = null) { // Check if the email is valid before adding it if(!$this->validate($email)) { return false; } if($name == null) { $this->header .= "From: ".$email."\r\n"; } else { $this->header .= "From: ".$name." <".$email.">\r\n"; } return true; } // This function will add a reply to to the email message public function reply_to($email, $name = null) { // Check if the email is valid before adding it if(!$this->validate($email)) { return false; } if($name == null) { $this->header .= "Reply-to: ".$email."\r\n"; } else { $this->header .= "Reply-to: ".$name." <".$email.">\r\n"; } return true; } // This function will add a cc to to the email message public function cc($email) { // Check if the email is valid before adding it if(!$this->validate($email)) { return false; } $this->cc[] = $email; return true; } // This function will add a bcc to to the email message public function bcc($email) { // Check if the email is valid before adding it if(!$this->validate($email)) { return false; } $this->bcc[] = $email; return true; } // This function will set the email subject public function subject($subject) { $this->subject = strip_tags(trim($subject)); return true; } // This function will add the message to the headers so we can actually send the email public function message($message = '', $type = 'html') { $textboundary = uniqid('textboundary'); $this->textheader = "Content-Type: multipart/alternative; boundary=\"".$textboundary."\"\r\n\r\n"; $this->message .= "--". $textboundary ."\r\n"; $this->message .= "Content-Type: text/plain; charset=\"". $this->charset ."\"\r\n"; $this->message .= "Content-Transfer-Encoding: quoted-printable\r\n\r\n"; $this->message .= strip_tags($message) ."\r\n\r\n"; $this->message .= "--". $textboundary ."\r\n"; $this->message .= "Content-Type: text/html; charset=\"".$this->charset ."\"\r\n"; $this->message .= "Content-Transfer-Encoding: quoted-printable\r\n\r\n"; $this->message .= $message ."\r\n\r\n"; $this->message .= "--". $textboundary ."--\r\n\r\n"; } // This function will add an attachment to the email message public function attachment($file) { // Make sure we are dealing with a real file here if(is_file($file)) { $basename = basename($file); $attachmentheader = "--". $this->boundary ."\r\n"; $attachmentheader .= "Content-Type: ".$this->mime_type($file)."; name=\"".$basename."\"\r\n"; $attachmentheader .= "Content-Transfer-Encoding: base64\r\n"; $attachmentheader .= "Content-Disposition: attachment; filename=\"".$basename."\"\r\n\r\n"; $attachmentheader .= chunk_split(base64_encode(fread(fopen($file,"rb"),filesize($file))),72)."\r\n"; $this->attachment[] = $attachmentheader; } else { return false; } } // This function builds the email header before being sent protected function build_header() { // Add out Cc's $count = count($this->cc); if($count > 0) { $this->header .= "Cc: "; for($i=0; $i < $count; $i++) { // Add a comma if we are not on our first! if($i > 0) { $this->header .= ','; } $this->header .= $this->cc[$i]; } $this->header .= "\r\n"; } // Add out Bcc's $count = count($this->bcc); if($count > 0) { $this->header .= "Bcc: "; for($i=0; $i < $count; $i++) { // Add comma if we are not on our first! if($i > 0) { $this->header .= ','; } $this->header .= $this->bcc[$i]; } $this->header .= "\r\n"; } // Add our MINE version and X-Mailer $this->header .= "X-Mailer: SuperSmash Framework\r\n"; $this->header .= "MIME-Version: 1.0\r\n"; // Add attachments $attachcount = count($this->attachment); if($attachcount > 0) { $this->header .= "Content-Type: multipart/mixed; boundary=\"". $this->boundary ."\"\r\n\r\n"; $this->header .= "--". $this->boundary ."\r\n"; $this->header .= $this->textheader; if($attachcount > 0) { $this->header .= implode("", $this->attachment); } $this->header .= "--". $this->boundary ."--\r\n\r\n"; } else { $this->header .= $this->textheader; } } // This function will check if the emailAddress specified is a valid email address public function validate($email) { // Use PHP's built in email validator if(!filter_var($email, FILTER_VALIDATE_EMAIL)) { $this->errors[] = "Invalid Email: <". $email .">"; return false; } return true; } // This function will get the mime type of a file for attachments public function mime_type($file) { $fileInfo = new finfo(); return $fileInfo->file($file, FILEINFO_MIME); } // This function will clear the current email public function clear() { $this->header = null; $this->to = null; $this->subject = null; return true; } } ?>