How can I send an email using php then add a template design in the email? I'm using this:
$to = "[email protected]";  
$subject = "Test mail";  
$message = "Hello! This is a simple email message.";  
$from = "[email protected]";  
$headers = "From: $from";  
mail($to,$subject,$message,$headers);  
echo "Mail Sent.";  
And it works fine! The problem is just how to add a template.
Why not try something as simple as this :
$variables = array();
$variables['name'] = "Robert";
$variables['age'] = "30";
$template = file_get_contents("template.html");
foreach($variables as $key => $value)
{
    $template = str_replace('{{ '.$key.' }}', $value, $template);
}
echo $template;
Your template file being something like :
<html>
<p>My name is {{ name }} and I am {{ age }} !</p>
</html>
                        Lets have a small crack at this :)
class Emailer
{
    var $recipients = array();
    var $EmailTemplate;
    var $EmailContents;
    public function __construct($to = false)
    {
        if($to !== false)
        {
            if(is_array($to))
            {
                foreach($to as $_to){ $this->recipients[$_to] = $_to; }
            }else
            {
                $this->recipients[$to] = $to; //1 Recip
            }
        }
    }
    function SetTemplate(EmailTemplate $EmailTemplate)
    {
        $this->EmailTemplate = $EmailTemplate;            
    }
    function send() 
    {
        $this->EmailTemplate->compile();
        //your email send code.
    }
}
Notice the function SetTemplate() ...
Heres a a small template class
class EmailTemplate
{
    var $variables = array();
    var $path_to_file= array();
    function __construct($path_to_file)
    {
         if(!file_exists($path_to_file))
         {
             trigger_error('Template File not found!',E_USER_ERROR);
             return;
         }
         $this->path_to_file = $path_to_file;
    }
    public function __set($key,$val)
    {
        $this->variables[$key] = $val;
    }
    public function compile()
    {
        ob_start();
        extract($this->variables);
        include $this->path_to_file;
        $content = ob_get_contents();
        ob_end_clean();
        return $content;
    }
}
Here's a small example, you still need to do the core of the script but this will provide you with a nice layout to get started with.
$emails = array(
    '[email protected]',
    '[email protected]'
);
$Emailer = new Emailer($emails);
 //More code here
$Template = new EmailTemplate('path/to/my/email/template');
    $Template->Firstname = 'Robert';
    $Template->Lastname = 'Pitt';
    $Template->LoginUrl= 'http://stackoverflow.com/questions/3706855/send-email-with-a-template-using-php';
    //...
$Emailer->SetTemplate($Template); //Email runs the compile
$Emailer->send();
Thats really all there is to it, just have to know how to use objects and its pretty simple from there, ooh and the template would look a little something like this:
Welcome to my site,
Dear <?php echo $Firstname ?>, You have been registered on our site.
Please visit <a href="<?php echo $LoginUrl ?>">This Link</a> to view your upvotes
Regards.
                        If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With