Friday, July 3, 2015

Email templat engine_laravel 5

Standard


this is the way end mail with Email Template Engine .save templates in database and replace some fields and send mail frist confige your laravel email config file mail.php

return [

 'driver' => env('MAIL_DRIVER', 'smtp'),
 'host' => env('MAIL_HOST', 'smtp.gmail.com'),
 'port' => env('MAIL_PORT', 587),
 'from' => ['address' => 'youremail@gmail.com', 'name' => 'name'],
 'encryption' => 'tls',
 'username' => env('MAIL_USERNAME'),
 'password' => env('MAIL_PASSWORD'),
 'sendmail' => '/usr/sbin/sendmail -bs',
 'pretend' => false,

];
.env file
MAIL_DRIVER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
MAIL_USERNAME=MyUsername@gmail.com
MAIL_PASSWORD=MyPassword

create data base & create email tempalte migration php artisan make:migration create_users_table upload migration file
class CreateEmailtemplateTable extends Migration {

 /**
  * Run the migrations.
  *
  * @return void
  */
 public function up()
 {
        Schema::create('emailtemplate', function(Blueprint $table)
        {
            $table->increments('id');
            $table->string('name');
            $table->string('variables',255);
            $table->string('subject', 255);
            $table->longText('description');
            $table->timestamp('created_at');
            $table->enum('status', array('1', '0'));
        });
 }

 /**
  * Reverse the migrations.
  *
  * @return void
  */
 public function down()
 {
  //
 }

}

OR you can upload sql file which on have in file in app\Http\Controllers.php add fuloowing function to accesss email sendig system throughout of you application IN CONTROLL.PHP
namespace App\Http\Controllers;

use Illuminate\Foundation\Bus\DispatchesCommands;
use Illuminate\Routing\Controller as BaseController;
use Illuminate\Foundation\Validation\ValidatesRequests;
use Mail;
use DB;
use Exception;

abstract class Controller extends BaseController {

 use DispatchesCommands, ValidatesRequests;



    public function sendemail($emil_template='',$mailsubject='',$email_variable='')
    {

//get data record using tempalte name

        $gettemplate=  $this->mailtemplate($emil_template);

//      deploy deta stringobject array
        $all_detail = [] ;
        foreach ($gettemplate[0] as $kay=>$tempalte_detail)
        {
            $all_detail[]=$tempalte_detail;
        }

//        get template description in to variable by channa
                  $description=$all_detail[4];

  //   send $description $description to VariableReplaceArray by channa
       $variable_replace_message= $this->VariableReplaceArray($email_variable,$description);

//     if controller subject is    get subject of email from default template
        if(empty($mailsubject))
            {
               $mailsubject=$all_detail[3];
            }

//get reciver name & email
        $receiver_name=$email_variable['{to_fname}'].' '.$email_variable['{to_lname}'];
        $receiver_email=$email_variable['{to_email}'];
//        echo '
'.print_r($receiver_email,1).'
'; // die(); Mail::send('email_tempate.user_template', ['mail_content' => $variable_replace_message], function($sendmail)use ($mailsubject,$receiver_name,$receiver_email) { $sendmail->to($receiver_email, $receiver_name); $sendmail->cc('noreply@gmail.com'); $sendmail->subject($mailsubject); }); return ; } // get email template from data table public function mailtemplate($getname) { // get email template $gettemplate = DB::table('emailtemplate')->where('name',$getname)->get(); //trigger exception in a "try" block for email template try { if(empty($gettemplate)) { //If the exception is thrown, this text will not be shown echo 'this title not available in email template table '; } } //catch exception catch(Exception $e) { echo 'Message: ' .$e->getMessage(); } return $gettemplate; } //VariableReplaceArray by channa public function VariableReplaceArray($email_variable,$description) { $getvariableArray=array_keys($email_variable); $replacevariableArray=array_values($email_variable); $variable_repalsement= str_replace($getvariableArray,$replacevariableArray,$description); return $variable_repalsement; } }
this is add your controller fuction which you create for send email
public function index()
 {

        $emil_template='user registration tempalate'; // template name  which need to send
        $mailsubject=""; //if user template default email subject kaeep this empty
        $message= 'this is the way end mail with Email Template Engine .save templates in database and replace some fields and send mail
        frist confige your laravel email config file mail.php';
//
        $email_variable=array(
            '{to_fname}'=>'channa',// receiver frist name
            '{to_lname}'=>'bandaara',//receiver last name
            '{to_email}'=>'channasmcs@gmail.com', //receiver email
            '{link}'=>'https://www.channasmcs.blogspot.com',// link if you send
            '{message}'=>$message, // message
        );
//        get this on sendemail function
        self::sendemail($emil_template,$mailsubject,$email_variable);


 }
$email_variable mean i define commen variable for repalce sender & reciever detail this method will easy becouse when we create template body like this (see sql file)
hello {to_fname} {to_lname} 



you have message


{message}



click this link {link}



thnank you
create folder resources\views email_template & create template layout file i make user.php this bring email body

  
    
HELLO GUYS channa make your work easy please comment see my blog for more
{!! $mail_content !!}
mail ot put

i hope this will help for advance develiopment 


get sample project from GIT-HUB

thank you

0 comments:

Post a Comment