[advanced search]
Next Live Event: NamePros Live Auction, May 23rd at 6PM EDT
Results from the May 8th live auction are here.
11 members in the live chat room. Join Chat!
Register Rules & FAQ NP$ Store Active Threads Mark Forums Read
Go Back   NamePros.Com > Design and Development > Programming > CODE
User Name
Password

Old 02-01-2008, 12:05 PM   · #1
Daniel
Danltn.com
 
Daniel's Avatar
 
Name: Daniel Neville
Location: Danltn.com / Nottingham, UK
Trader Rating: (65)
Join Date: May 2007
Posts: 1,162
NP$: 638.56 (Donate)
Daniel has a reputation beyond reputeDaniel has a reputation beyond reputeDaniel has a reputation beyond reputeDaniel has a reputation beyond reputeDaniel has a reputation beyond reputeDaniel has a reputation beyond reputeDaniel has a reputation beyond reputeDaniel has a reputation beyond reputeDaniel has a reputation beyond reputeDaniel has a reputation beyond reputeDaniel has a reputation beyond repute
Ethan Allen Fund Ethan Allen Fund
Wink 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


Please register or log-in into NamePros to hide ads

Last edited by Daniel : 02-02-2008 at 03:44 AM.
Daniel is offline   Reply With Quote
Reply

NamePros is a revenue sharing forum.

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is Off
HTML code is Off
Forum Jump


Site Sponsors
www.clixnhits.com Join now! Proof is in the Parking
Advertise your business at NamePros
All times are GMT -7. The time now is 02:21 AM.


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