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

问题描述 投票:1回答: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

laravel email notifications laravel-5.4
4个回答
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'时,您明确地说呈现的邮件将仅使用此视图,即markdown,而您完全忽略将发送的HTML电子邮件。

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


0
投票

尝试在/resources/views/vendor/mail/html/message.blade.php标签内输出图像:

<img>

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

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


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

对于具有Undefined variable:message]的用户:您需要将变量<img src="{{$message->embed(asset('images/image_name.png'))}}"> 发送到视图,而$messageMailable实例。例如:

$message
© www.soinside.com 2019 - 2024. All rights reserved.