gpt4 book ai didi

php - LARAVEL:发送存储在数据库中的邮件,使用所见即所得编辑器制作

转载 作者:行者123 更新时间:2023-11-28 00:42:14 25 4
gpt4 key购买 nike

我正在尝试为我的 Laravel 项目设置电子邮件功能。我已经完成了所有设置、Mailable 类、Mailgun、用于发送邮件的 Controller 等。

我已经阅读了 Laravel 邮件文档,并尝试按照它的建议去做,为我的邮件等使用 Blade 模板。

问题是,我的客户将使用所见即所得的编辑器制作他们自己的邮件,所以我不能只在 blade.php 中制作邮件模板。我想从数据库中获取邮件内容,然后将其注入(inject)一个 blade 文件,我已经成功地做到了这一点。

但是假设邮件内容是“Hello {{$name}}”,当我从数据库中获取它并将其注入(inject) Blade 模板时,发送的邮件实际上是“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}}。但由于它来自数据库,因此处理方式显然与我在 View 文件中写入“Hello {{$name}}”时的处理方式不同。

我的 Blade 模板如下所示:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Confirmation mail</title>
</head>
<body>
{!! $content !!}
</body>

有什么建议吗?我希望这对外面的人有意义 :D

最佳答案

你能在输出之前使用一个 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');
}

关于php - LARAVEL:发送存储在数据库中的邮件,使用所见即所得编辑器制作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52757099/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com