【问题标题】:Laravel-generated email not formatting HTML correctlyLaravel 生成的电子邮件未正确格式化 HTML
【发布时间】:2020-06-10 03:56:10
【问题描述】:

我正在努力解决 Laravel 的电子邮件格式问题。 我从数据库中获取电子邮件内容 (HTML),这并不重要,但随后添加了引号,格式错误,我的电子邮件如下所示:

这是我的代码,非常感谢您的帮助!

我试过了 '内容' => htmlspecialchars($content) 和 '内容' => htmlentities($内容) 但没有任何工作,对于刀片文件:

<div>
    {{!!$content!!}}
</div>

给我一​​个错误。我也试过了

<div>
    {{{$content}}}
</div>

(也是意外字符的错误)和

<div>
    {{$content}}
</div>

(这是原版)

<?php

namespace App\Mail;

use Illuminate\Bus\Queueable;
use Illuminate\Mail\Mailable;
use Illuminate\Queue\SerializesModels;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Cookie;

class InsuranceEmail extends Mailable
{
    use Queueable, SerializesModels;
    protected $attacheddoc;

    /**
     * Create a new message instance.
     *
     * @return void
     */
    public function __construct($attacheddoc)
    {
        $this->attacheddoc=$attacheddoc;
    }

    /**
     * Build the message.rubr
     *
     * @return $this
     */
    public function build()
    {
        $name = Auth::user()->nom . " " .  Auth::user()->prenom;

        $sqlContent="SELECT texte from blabla";

        $content = DB::connection('blabla')->select( DB::connection('blabla')->raw($sqlContent))[0]->texte;
        $content = str_replace('#memberName#', $name, $content);
        $content = str_replace('"', '', $content); //I tried this, without any hope ;)

        return $this->from('contact@blabla.net')
                ->markdown('emails.blabla')->with([
                    'title' => "Email onject",
                    'memberName' => $name,
                    'content' => $content,
                ])
                ->attach($this->attacheddoc, array(
                    'as' => 'attacheddoc.pdf', 
                    'mime' => 'application/pdf'));
    }
}

【问题讨论】:

  • 使用 {!! $content !!} 在您的视图文件中
  • 你用过{{!!$content!!}}试试{!! $content !!}
  • 谢谢,我都试过了:/

标签: html laravel email laravel-5 html-email


【解决方案1】:

在您的 emails.blabla 视图中,像这样它会转义 HTML 元素

{{{ $content }}}

或者试试

{!! $content !!}

【讨论】:

  • 两者都一样...很奇怪,我不明白!
  • 我试过了:
    {{!! $content !!}}
    ,
    {!! $content !!}
    如您所见,该文件非常简单:D
【解决方案2】:

根据 Laravel 文档:

默认情况下,Blade {{ }} 语句会自动通过 PHP 的 htmlspecialchars 函数可以防止 XSS 攻击。如果你不 希望您的数据被转义,您可以使用以下语法:

Hello, {!! $name !!}.

参考:

Laravel -> Blade Templates -> Displaying Unescaped Data

【讨论】:

  • 由于某种原因,如果我写
    {{!! $content !!}}
    也会出现“意外字符”错误。如果我写
    {!! $content !!}
    ,我只得到“{!! $content !!}" 作为电子邮件(不包含内容)
【解决方案3】:

我尝试了一些方法来尝试修复我的电子邮件显示不正确。最后清除我的视图缓存解决了我的问题,我没有看到其他人建议。这很可能不是您的问题,但我会将其包含在我的答案中,希望能帮助其他人解决我的问题。

发布 Laravel 电子邮件视图

php artisan vendor:publish --tag=laravel-mail

确保您的 html 视图中没有缩进

resources/views/vendor/mail/html

确保对通过变量插入的任何 html 进行转义

{!! $content !!}

清除缓存视图

php artisan view:clear

【讨论】:

    猜你喜欢
    • 2011-06-02
    • 2020-05-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-10
    • 2018-04-18
    • 1970-01-01
    • 2015-02-08
    相关资源
    最近更新 更多