从Laravel HTML Mailable(NON Markdown)中未收到$ message变量

Ken*_*rna 7 email laravel laravel-5.5

我已经阅读了几个与此问题相关的类似问题,但都提到Markdown mailables.

我正在尝试在mailables中发送内联图像,但我还没有找到适当的方法(Laravel 5.5).

文件说,这:

内联附件

将内嵌图像嵌入电子邮件通常很麻烦; 但是,Laravel提供了一种将图像附加到电子邮件并检索相应内容的便捷方法CID.要嵌入内嵌图像,请在电子邮件模板中embed$message变量上使用该方法.Laravel自动使$message变量可用于您的所有电子邮件模板,因此您无需担心手动传递它:

<body>
    Here is an image:

    <img src="{{ $message->embed($pathToFile) }}">
</body>
Run Code Online (Sandbox Code Playgroud)

但是,当这样做时,我收到此错误:

未定义的变量:message(查看:/path/to/project/resources/views/mails/new_user_welcome.blade.php)

我知道这在使用Markdown消息时有一个限制,但我没有使用它.


这是相关文件:

邮件/ NewUserWelcomeEmail.php

class NewUserWelcomeEmail extends Mailable
{
    use SerializesModels;

    public function build()
    {
        return $this->view('mails.new_user_welcome');
    }
}
Run Code Online (Sandbox Code Playgroud)

资源/视图/邮件/ new_user_welcome.blade.php

@extends('layouts.mail')

@section('content')

    <img src="{{ $message->embed(url("storage/images/inline_image.png")) }}" 
    alt="An inline image" />

@endsection
Run Code Online (Sandbox Code Playgroud)

应用程序/ HTTP /控制器/ UserController.php

public function register(NewUserRequest $request)
{
    // some code

    Mail::to($user)->send(new NewUserWelcomeEmail($user));

    return 'done';
}
Run Code Online (Sandbox Code Playgroud)

Ken*_*rna 9

好吧,说实话,我还没有找到一种方法可以让它正常工作。我的意思是,就目前情况而言,这应该可行。也许是我的 Laravel 安装(?)..

不管怎样,我确实通过一种解决方法让它发挥作用。

1)使用 Eduardokum 的Laravel Mail Auto Embed包,这基本上为每个媒体资产生成一个CID 。

但是添加这个包后,这并没有按预期工作..所以我:

2)改变我引用我的资产的方式,从此:

   <img src="{{ url('storage/inline_image.png') }}" />
Run Code Online (Sandbox Code Playgroud)

对此:

   <img src="{{ asset('storage/inline_image.png') }}" />
Run Code Online (Sandbox Code Playgroud)

现在可以了。

  • @bart 不,它不起作用。最初的问题不是我引用资产的方式,而是“$message”变量。遗憾的是,我还没有找到让它发挥作用的方法。是的,我尝试了(我假设)你的建议,但正如我所说,它不起作用:/ (2认同)