| Danltn.com Name: Daniel Neville Location: Danltn.com / Nottingham, UK Join Date: May 2007
Posts: 1,162
NP$: 638.56 ( Donate)
| Mail Class PHP Code: <?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 Code: <?php
$mail = new email;
$mail->html_mail()->to('daniel.neville@gmail.com')->subject('Hello')->message('Hello there <b>Daniel Neville</b>. How are you?')->from('daniel@neville.tk')->header(array("Blah: Hello", "There: You are"))->send();
$mail->reset();
$mail->to('daniel.neville@gmail.com')->subject('Hello')->message('Hello there <b>Daniel Neville</b>. This should not be bold')->from('daniel@neville.tk')->send();
?> http://danltn.com/bin/o0q.phps
Constructive critiscism and feedback are more than welcome.
I'd love to know your opinions, so please tell me them!
Reply back if you need any help.
Dan 
Last edited by Daniel : 02-02-2008 at 03:44 AM.
|