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=MyPasswordcreate 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 'this is add your controller fuction which you create for send email'.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; } }
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 youcreate folder resources\views email_template & create template layout file i make user.php this bring email body
mail ot putHELLO GUYS channa make your work easy please comment see my blog for more {!! $mail_content !!}
i hope this will help for advance develiopment
get sample project from GIT-HUB thank you
0 comments:
Post a Comment