This topic is locked

Sending templated email messages

2/24/2012 12:53:09 AM
PHPRunner Tips and Tricks
admin

Composing good looking HTML emails in your code is a tedious task. Luckily there is a better way to design your emails. Fire up your favorite HTML or text editor and compose your email there. Fill it with template variables like ##User_name##. Here is the sample "thank you for your order" email template.

<P><STRONG>Thanks for your order, ##User_name##!</STRONG> </P>

<P>If you need to check the status of your order or make changes, please visit our home page at ##Website_URL##, login and edit your orders. </P>

<P><STRONG>Personal info</STRONG> </P>

<P><STRONG>Email Address:</STRONG> ##User_email## </P>

<P><STRONG>Billing Address:</STRONG> ##Billing_address## <STRONG>Shipping Address:</STRONG> ##Shipping Address## </P>

<P><STRONG>Order Total:</STRONG> ##total## </P>

<P>Thanks again for shopping with us!</P>


We are going to save this template to order.txt file. Here is the code that loads template, replaces variables and sends the email:

// load email template

$email_message = file_get_contents("order.txt");

// replace variables

$email_message = str_replace("##User_name##","Next USA president",$email_message);

$email_message = str_replace("##User_email##","president@whitehouse.gov",$email_message);

$email_message = str_replace("##Billing_address##","1600 Pennsylvania Avenue",$email_message);

$email_message = str_replace("##Shipping Address##","1600 Pennsylvania Avenue",$email_message);

$email_message = str_replace("##Total##","123.56",$email_message);

$email_message = str_replace("##Website_URL##","http://mycoolwebsite.com",$email_message);

// send HTML email

runner_mail(array('to' => "president@whitehouse.gov", 'subject' => "Thank you for your order", 'htmlbody' => $email_message, 'charset' => 'UTF-8'));


In your application instead of hardcoded values you need to execute one or more SQL queries to retrieve data from the database.
If you want to send emails in multiple languages prepare one email template for each language and load corresponding file based on session language or based on user preferences.