Showing posts with label Mailer dynamic template. Show all posts
Showing posts with label Mailer dynamic template. Show all posts

Friday, July 8, 2016

Dynamic Parse Mail Template

Most of us want a mailing system with template ...Simple Mailing does not always deliver best result


While we use Library like PHPMailer to send mail we Need to send the data  as text/HTML and that also dynamic Data to be sent in proper format .

Here is Example of How you can dynamically parse a mail template.


/////////////////////////////////////////////////////////////////////////////////////////////////////////////
// ABS_PATH = ABSOLUE PATH
// DS = SAPERATOR
// MAIL_TEMPLATE_PATH = TEMPLATE FILE PATH

argument 1 is name of the html or htm file to be parsed
argument 2 is the array which is to be parsed.

function ParseMailTemplate($Template, $Custom=""){
$GeneralKywords = array();
$GeneralKywords["SERVER_ROOT"]=SERVER_ROOT;

$f = fopen(ABS_PATH.DS.MAIL_TEMPLATE_PATH."/".$Template,"r");
if(!$f){
return NULL;
}
$TemplateBody = fread($f,filesize(ABS_PATH.DS.MAIL_TEMPLATE_PATH."/".$Template));
fclose($f);

$HTMLBody=$TemplateBody;

if(is_array($Custom)){
foreach($Custom as $Find=>$ReplaceWith){
$TemplateBody = str_replace("{".$Find."}",$ReplaceWith,$TemplateBody);
}
}

foreach($GeneralKywords as $Find=>$ReplaceWith){
$TemplateBody = str_replace("{".$Find."}",$ReplaceWith,$TemplateBody);
}

return $TemplateBody;
}
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

Demo template file : contact.html

Here variable in curly bracket are sent via array in function

Example

$mail_body = $this->ParseMailTemplate("contact.html",
array("name"=>$_POST['name'],
                                                                                "city"=>$_POST['city'],
                                                                                "phone"=>$_POST['phone'],
         "email"=>$_POST['email'],
 "msgbox"=>$_POST['msgbox'],
 )
 );


Then send the $mail_body as message in your mail .

All Done
Thanks