如何在laravel上的电子邮件布局中显示图像?

时间:2017-09-04 09:27:37

标签: laravel email notifications laravel-5.4

我发送电子邮件的代码如下:

public function toMail($notifiable)
{
    return (new MailMessage)
                ->subject('Test')
                ->markdown('vendor.mail.markdown.message', ['data' => $this->data]);
}

我的message.blade视图如下:

@component('mail::layout')
    {{-- Header --}}
    @slot('header')
        @component('mail::header', ['url' => config('app.url')])
            {{ config('app.name') }}
        @endcomponent
    @endslot

    {{-- Body --}}
    This is your logo 
    ![Some option text][logo]
    [logo]: {{asset('img/my-logo.png')}} "Logo"  

    {{-- Subcopy --}}
    @isset($subcopy)
        @slot('subcopy')
            @component('mail::subcopy')
                {{ $subcopy }}
            @endcomponent
        @endslot
    @endisset

    {{-- Footer --}}
    @slot('footer')
        @component('mail::footer')
            © {{ date('Y') }} {{ config('app.name') }}. All rights reserved.
        @endcomponent
    @endslot
@endcomponent

它成功发送电子邮件,但包含这样的电子邮件:

This is your logo 
![Some option text][logo]

[logo]: http://myshop.dev/img/my-logo.png "Logo"

图像不显示

我该如何解决这个问题?

我遵循此引用:https://medium.com/@adnanxteam/how-to-customize-laravel-5-4-notification-email-templates-header-and-footer-158b1c7cc1c

4 个答案:

答案 0 :(得分:1)

这是一个古老的问题,但这可能会对其他人有所帮助。尝试一下...(假设您想用徽标替换应用名称)

@component('mail::layout')
    {{-- Header --}}
    @slot('header')
        @component('mail::header', ['url' => config('app.url')])
            <img src="{{ asset('img/my-logo.png') }}" alt="{{ config('app.name') }} Logo">
        @endcomponent
    @endslot

    {{-- Body --}}
    {{ $slot }}

    {{-- Subcopy --}}
    @isset($subcopy)
        @slot('subcopy')
            @component('mail::subcopy')
                {{ $subcopy }}
            @endcomponent
        @endslot
    @endisset

    {{-- Footer --}}
    @slot('footer')
        @component('mail::footer')
            © {{ date('Y') }} {{ config('app.name') }}. @lang('All rights reserved.')
        @endcomponent
    @endslot
@endcomponent

扩展'vendor.mail.markdown.message'时,您明确地说,呈现的邮件将仅使用此视图(降价),而完全忽略将要发送的HTML电子邮件。

Markdown电子邮件具有HTML版本和原始文本版本,由于您正在查看电子邮件的HTML版本,因此看不到对markdown文件所做的更改,因此请查看您必须更新的更改{ {1}}不仅是降价促销。

答案 1 :(得分:0)

尝试在<img>标记内输出图片:

<img src="{{ $message->embed(asset('img/my-logo.png')) }}" alt="alt here">

答案 2 :(得分:0)

@component('mail::layout')
    {{-- Header --}}
    @slot('header')
        @component('mail::header', ['url' => config('app.url')])
            {{ config('app.name') }}
        @endcomponent
    @endslot

    {{-- Body --}}
    This is your logo 
    ![Some option text][logo]
    [logo]: <img src="{{url('/img/my-logo.png')}}" style="height: 100px;"/>  "Logo"  

    {{-- Subcopy --}}
    @isset($subcopy)
        @slot('subcopy')
            @component('mail::subcopy')
                {{ $subcopy }}
            @endcomponent
        @endslot
    @endisset

    {{-- Footer --}}
    @slot('footer')
        @component('mail::footer')
            &copy; {{ date('Y') }} {{ config('app.name') }}. All rights reserved.
        @endcomponent
    @endslot
@endcomponent

请参阅我在您的图像应添加的位置添加了标签。 url('/ img / my-logo.png')转换为存储图像的完整站点地址。

答案 3 :(得分:0)

这对我有用!

<img src="{{$message->embed(asset('images/image_name.png'))}}">

对于具有未定义变量:消息的用户: 您需要将变量$message发送到视图,而$message Mailable 实例。
示例:

$this->view('view_name_here')
     ->with(['message' => $this])
     ->subject("Hello..");