LARAVEL:发送存储在 DB 中的邮件,使用 WYSIWYG 编辑器制作
Posted
技术标签:
【中文标题】LARAVEL:发送存储在 DB 中的邮件,使用 WYSIWYG 编辑器制作【英文标题】:LARAVEL: Send mail that is stored in DB, made using a WYSIWYG editor 【发布时间】:2019-03-16 08:40:13 【问题描述】:我正在尝试为我的 Laravel 项目设置电子邮件功能。我已经完成了所有设置,Mailable 类、Mailgun、发送邮件的控制器等。
我已经浏览了 Laravel 邮件文档,并尝试按照它的建议进行操作,为我的邮件等使用刀片模板。
问题是,我的客户将使用所见即所得的编辑器制作他们自己的邮件,所以我不能只在blade.php 中制作邮件模板。我想从数据库中获取邮件内容,然后将其注入到刀片文件中,我已经设法成功了。
但是假设邮件内容是“Hello $name”,当我从数据库中获取它并将其注入刀片模板时,发送的邮件实际上是“Hello $name ” 而不是“你好 John Doe”。我在构建函数中的 Mailable 类中发送 $name。
class Confirmation extends Mailable
use Queueable, SerializesModels;
/**
* Create a new message instance.
*
* @return void
*/
public function __construct(Customer $customer, Mail $mail_content)
$this->customer = $customer;
$this->mail_content = $mail_content;
/**
* Build the message.
*
* @return $this
*/
public function build()
return $this->from('noreply@example.com')
->with([
'name' => $this->customer->name,
'content' => $this->mail_content->content,
])
->subject('Confirmation')
->view('emails.test');
因此,如果内容是“Hello $name”,我希望构建函数中的名称替换内容中的 $name。但由于它来自数据库,因此它的处理方式显然与我刚刚在视图文件中写“Hello $name”的方式不同。
我的刀片模板如下所示:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Confirmation mail</title>
</head>
<body>
!! $content !!
</body>
有什么建议吗? 我希望这对那里的人有意义:D
【问题讨论】:
我不记得它是如何工作的,但你想看看 Blade::compileString。 ***.com/questions/39801582/… 【参考方案1】:你可以在输出之前使用 str_replace() 吗? http://php.net/manual/en/function.str-replace.php
public function replaceContent()
$this->mail_content->content = str_replace('$name', $this->customer->name, $this->mail_content->content)
并在你的构建函数中调用它
public function build()
$this->replaceContent();
return $this->from('noreply@example.com')
->with([
'name' => $this->customer->name,
'content' => $this->mail_content->content,
])
->subject('Confirmation')
->view('emails.test');
【讨论】:
我什至没有想过要走那条路,但它很完美。谢谢! :-) 您可以通过在字符串中扫描不同的 placeholders 并替换为相关变量(如果已设置)来使用 replaceContent() 函数变得更加聪明以上是关于LARAVEL:发送存储在 DB 中的邮件,使用 WYSIWYG 编辑器制作的主要内容,如果未能解决你的问题,请参考以下文章
使用 MYSQL db 中的正文通过 PHP 发送电子邮件并解析 \n
如何使用 laravel 5 中的队列通过电子邮件发送密码重置链接