从数据库表中打印邮件模板

时间:2018-06-20 09:53:54

标签: php laravel laravel-5 laravel-5.3

我想从laravel视图刀片中的db表中打印邮件内容。我有表mail_template。 我想从该表中获取字段正文。

body字段是一个长文本,值包含在PHP内容中

body field value 
<?php

if(($logged==Auth::User()->user_name && $finance_review!='')|| $status=='Rejected'){
?>
<span>Hello {{$requestor_name}},</span>
<p>{{$approver_name}} has {{$status}} your Asset
request. Please login to <a href='asd.com'>http://systems.test.com</a>
&rarr; “Asset” and see your status</p>
<?php }
else{ ?>
<span>Hello {{$approver_name}},</span>
<p>{{$requestor_name}} has raised request. 
Please login to <a href=''>test</a>
&rarr; “Asset” and see your status</p>
<?php } ?>

我想从获取的正文字段发送包含填充内容的邮件。 我尝试过

$mail_content=mail_template::where('config_name','=','approve')->first()->body;
echo $mail_content;

它只是将内容打印为文本。我想在变量中填充值

2 个答案:

答案 0 :(得分:0)

您可以尝试将电子邮件模板另存为

<p>{{name_replace}}</p>
<p>{{email_replace}}</p>

从数据库中获取模板后,请尝试对具有值的模板使用php str_replace函数。例如

$template = str_replace("{{name_replace}}", "Zoe", $template);

我认为这可以解决您的问题。让我知道是否有帮助。

答案 1 :(得分:0)

嗯,您使用这种方法加载电子邮件模板,也就是说,从您的数据库中获得的效果很棒,问题在于它是用PHP编写的。

使用视图代替将模板存储在数据库中。在您的 \ resources \ views 中创建一个文件夹,其中将保存您所有的邮件模板,在本例中为 folder 。然后在您的控制器中执行以下操作:

// Use Mail class, right on top:
use Illuminate\Support\Facades\Mail;

// Load the view to send
Mail::send('folder.view', $data, function ($mail) {
   $mail->from('from@email.com', 'Description');
   $mail->to(['to@email.com']);
   $mail->subject('SUBJECT');
});

位置:

  • folder.view 是位于 folder view.blade.php 视图。 >文件夹。
  • $ data 是您要传递给视图的任何内容。
  • 其余的取决于您的喜好,请阅读文档:laravel Mail

希望此信息会有用并保持编码。