当前位置: 首页 > 知识库问答 >
问题:

LARAVEL:发送存储在DB中的邮件,使用WYSIWYG编辑器生成

胡修伟
2023-03-14

我正在尝试为我的Laravel项目设置电子邮件功能。我已经完成了所有的设置,邮件类,邮枪,发送邮件的控制器,等等。

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

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

但是假设邮件内容是Hello{{$name}},当我从数据库中获取并将其注入刀片模板时,发送的邮件实际上是说Hello{{$name}而不是Hello John Doe。我发送$name在我的Mailable类,在构建函数。

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

共有1个答案

韶浩皛
2023-03-14

你能在输出之前使用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');
}
 类似资料:
  • 我希望能够将我的数据输入到Sheet1中,然后查看Sheet2并点击sendEmail按钮。

  • 简介 Laravel 基于 SwiftMailer 函数库提供了一套干净、简洁的邮件 API ,Laravel 为 SMTP 、Mailgun 、SparkPost 、 Amazon SES 、 PHP 的 mail 函数及 sendmail 提供驱动,让你可以快速从本地或云端服务自由地发送邮件。 驱动前提 基于 API 的驱动,例如 Mailgun 和 SparkPost 通常比 SMTP 服务

  • 我正在尝试使用thymeleaf模板发送电子邮件。但我收到一条错误消息 我不能使用WebContext()而不是Context()。因为对于webContext,我需要我无法在这里获得的HttpServletRequest对象,因为它不在请求范围内。我正在尝试使用上下文()发送邮件,但我收到了错误。请任何人对此有解决方案。提前感谢这是我的代码,

  • 我正在使用Laravel 7,我想使用sendemail驱动程序和Laravel Mail Facade发送电子邮件,因为当我使用php邮件功能时,它可以工作,但我想使用Laravel Mail Facade。 这是我的. env文件电子邮件配置 这是我在config/mail中的默认邮件。php 什么是正确的配置?如何使其工作?

  • 使用laravel 7/livewire应用程序,我使用Repository制作crud,并获得了数据列表,在装载事件中,我分配了受保护的var$FacilityRepository,它在render方法中正常工作, 但在编辑方法中为空,我得到错误: 当用户单击“编辑链接”时 在模板中,编辑链接定义为: 为什么会出现错误以及如何修复? 修改#2: > 类设施扩展组件{...公共$FacilityR

  • 我正在尝试用Laravel 5.2发送电子邮件。这是我第一次在拉威尔发电子邮件。但它抛出了这个错误 这是我发送电子邮件的代码: 这是我在env文件中的电子邮件设置 我的欢迎视图只有一条消息“Hello world” 我已经在Gmail设置中为我的电子邮件配置了不太安全的应用程序设置。那么,我的代码有什么问题,为什么会抛出那个错误?

  • 我们已经成功实现了账户激活和密码重设功能,本节要配置应用,让它在生产环境中能真正地发送邮件。我们首先搭建一个免费的邮件服务,然后配置应用,最后再部署。 我们要在生产环境中使用 SendGrid 服务发送邮件。这个服务是 Heroku 的扩展,只有通过认证的账户才能使用。(要在 Heroku 的账户中填写信用卡信息,不过认证不收费。)对我们的应用来说,入门套餐(免费,写作本书时限制每天最多只能发送

  • 我下载了Office 365 Connect ASP。NET MVC示例代码http://dev.office.com/code-samples-detail/5985,将其注册为Azure Active Directory中的应用程序(我具有全局管理员权限),并授予其所需的权限-“登录并读取用户配置文件”和“以用户身份发送邮件”(无其他权限),以及配置了web。配置为“ClientID”和“Cl