- Impact
- 133
PHP:
<?php
/**
* Danltn | [url]http://danltn.com/[/url]
* No warranty is given to code used
* Under creative commons license:
* [url]http://creativecommons.org/licenses/by-nc-sa/2.0/uk/[/url]
* Attribution-Non-Commercial-Share Alike 2.0 UK: England & Wales
*/
/* For testing purposes */
error_reporting(E_ALL);
class email
{
private $to;
private $from;
private $cc;
private $bcc;
private $subject;
private $raw_headers = array();
private $headers;
private $message;
public function __construct($short = false, $to = '', $from = '', $cc = '', $bcc = '', $subject = '', $message = '', $headers = '')
{
if ($short)
{
$this->to($to);
$this->from($from);
$this->cc($cc);
$this->bcc($bcc);
$this->subject($subject);
$this->message($message);
$this->header($header);
}
}
public function reset($what = 'all')
{
$what = strtolower($what);
switch ($what)
{
case 'to':
$this->to = null;
break;
case 'cc':
$this->cc = null;
break;
case 'bcc':
$this->bcc = null;
break;
case 'from':
$this->from = null;
break;
case 'message':
$this->message = null;
break;
case 'subject':
$this->subject = null;
break;
case 'headers':
$this->headers = null;
break;
case 'raw_headers':
$this->raw_headers = array();
break;
case 'all headers':
$this->raw_headers = array();
$this->headers = null;
break;
default:
$this->to = null;
$this->from = null;
$this->cc = null;
$this->bcc = null;
$this->subject = null;
$this->message = null;
$this->raw_headers = array();
$this->headers = null;
}
return $this;
}
public function to($to = '')
{
if (!$to)
{
return $this;
}
if (is_array($to))
{
$to = implode(', ', $to);
}
$to = str_replace("\n", '', $to);
$to = trim($to);
$this->to = $to;
return $this;
}
public function from($from = '')
{
if (!$from)
{
return $this;
}
if (is_array($from))
{
$from = implode(', ', $from);
}
$from = trim($from);
$this->header($from, 'from');
$this->from = $from;
return $this;
}
public function cc($cc = '')
{
if (!$cc)
{
return $this;
}
if (is_array($cc))
{
$cc = implode(', ', $cc);
}
$cc = trim($cc);
$this->cc = $cc;
return $this;
}
public function bcc($bcc = '')
{
if (!$bcc)
{
return $this;
}
if (is_array($bcc))
{
$bcc = implode(', ', $bcc);
}
$this->bcc = $bcc;
return $this;
}
public function subject($subject = '', $force70 = 1)
{
/* Some things choke if the subject is more than 70 chars. */
if (!$subject)
{
return $this;
}
if ($force70 == false)
{
$subject = substr($subject, 0, 70);
}
$subject = str_replace("\n", ' ', $subject);
$this->subject = $subject;
return $this;
}
public function message($message = '', $wordwrap = 0, $htmlspecialchars = 0)
{
if (!$message)
{
return $this;
}
if ($wordwrap)
{
$message = wordwrap($message, 70, "\n");
}
if ($htmlspecialchars)
{
$message = htmlspecialchars($message);
}
$this->message = $message;
return $this;
}
private function ss($text)
{
if (get_magic_quotes_gpc())
{
return stripslashes($text);
}
else
{
return $text;
}
}
public function html_mail($ar = true)
{
if ($ar)
{
$this->header('MIME-Version: 1.0', false);
$this->header('Content-type: text/html; charset=iso-8859-1', false);
}
else
{
foreach ($this->raw_headers as & $header)
{
if ($header == 'MIME-Version: 1.0' or $header == 'Content-type: text/html; charset=iso-8859-1')
{
unset($header);
}
}
}
return $this;
}
public function header($header = '', $special = false)
{
if (!$header)
{
return $this;
}
if(is_array($header))
{
foreach($header as $h)
{
$this->header($h, false, false);
}
return $this;
}
if ($special == true)
{
$special = str_replace(' ', '', str_replace('-', ' ', strtolower($special)));
switch ($special)
{
case 'from':
$this->header("From: $header", false);
break;
case 'reply to':
$this->header("Reply-To: $header", false);
break;
case 'bcc':
$this->header("Bcc: $header", false);
break;
case 'cc':
$this->header("Cc: $header", false);
break;
case 'x mailer':
$this->header("X-Mailer: $header", false);
break;
}
}
else
{
$header = str_replace("\n", '', $header);
$this->raw_headers[] = $header;
return $this;
}
}
private function gen_header()
{
if (!$this->raw_headers)
{
return $this;
}
else
{
$this->headers = '';
if (!defined('CRLF'))
{
define('CRLF', " \r\n");
}
foreach ($this->raw_headers as $header)
{
$this->headers .= $header . CRLF;
}
}
return $this;
}
public function send()
{
$this->gen_header();
$s = mail($this->to, $this->subject, $this->message, $this->headers);
if ($s)
{
/* This was just here for testing, you can remove it if need be. */
echo "Mail successfully sent to {$this->to}.";
return true;
}
else
{
return false;
}
}
}
?>
PHP 5 only.
Suggested usage via Method Chaining:
PHP:
<?php
$mail = new email;
$mail->html_mail()->to('[email protected]')->subject('Hello')->message('Hello there <b>A Name Goes Here</b>. How are you?')->from('[email protected]')->header(array("Blah: Hello", "There: You are"))->send();
$mail->reset();
$mail->to('[email protected]')->subject('Hello')->message('Hello there <b>Daniel Neville</b>. This should not be bold')->from('[email protected]')->send();
?>
http://danltn.com/bin/o0q.phps
Constructive critiscism and feedback are more than welcome. :hehe:
I'd love to know your opinions, so please tell me them!
Reply back if you need any help.
:tu:
Dan
Last edited: