NamePros.Com (http://www.namepros.com/)
-   CODE (http://www.namepros.com/code/)
-   -   Mail Class (http://www.namepros.com/code/426594-mail-class.html)

Daniel 02-01-2008 12:05 PM

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. :hehe:

I'd love to know your opinions, so please tell me them!

Reply back if you need any help.

:tu:

Dan :love:


All times are GMT -7. The time now is 09:36 PM.
Site Sponsors
Advertise your business at NamePros

Powered by: vBulletin Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 2.4.0