首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Laravel5.6中使用和自定义HTML电子邮件(而不是标记)?

如何在Laravel5.6中使用和自定义HTML电子邮件(而不是标记)?
EN

Stack Overflow用户
提问于 2018-10-19 16:02:07
回答 1查看 4.2K关注 0票数 3

所以我试图用Laravel5.6发送一封html电子邮件,并遇到一些有趣的问题。

首先,当涉及到定制HTML内容,甚至使用默认的HTML布局时,文档是非常糟糕的。

https://laravel.com/docs/5.6/mail#writing-mailables

有一节用于“配置视图”,其中告诉您只需执行以下操作。

代码语言:javascript
复制
return $this->view('emails.orders.shipped');

很好,我在做这个。在我的刀片文件里我刚刚

代码语言:javascript
复制
Here is a test message.

它能发出很好的信号。但是,没有任何意义的是,该页面还说,您可以运行下面的手工命令来生成默认的电子邮件模板。

代码语言:javascript
复制
php artisan vendor:publish --tag=laravel-mail

它说:“邮件目录将包含一个html和一个标记目录,每个目录都包含每个可用组件的各自表示。html目录中的组件用于生成电子邮件的HTML版本。”

这些文档还深入介绍了如何定制和使用这些标记模板。你只要叫@component('mail::message')在减价刀片文件的顶部..。但是,我不想给打折扣。我只想要一封普通的HTML邮件。

仅在使用@component('mail::message')时使用->view()时,->markdown()不起作用。我也不能只做以下的事情。

代码语言:javascript
复制
@extends('vendor.mail.html.layout')
Test message

正如它告诉我的,槽是错误日志中一个未定义的变量。

不知道为什么,/ layout.blade.php /mail/html/目录中的文件包含以下内容.

代码语言:javascript
复制
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>
    <style>
        @media only screen and (max-width: 600px) {
            .inner-body {
                width: 100% !important;
            }

            .footer {
                width: 100% !important;
            }
        }

        @media only screen and (max-width: 500px) {
            .button {
                width: 100% !important;
            }
        }
    </style>

    <table class="wrapper" width="100%" cellpadding="0" cellspacing="0">
        <tr>
            <td align="center">
                <table class="content" width="100%" cellpadding="0" cellspacing="0">
                    {{ $header ?? '' }}

                    <!-- Email Body -->
                    <tr>
                        <td class="body" width="100%" cellpadding="0" cellspacing="0">
                            <table class="inner-body" align="center" width="570" cellpadding="0" cellspacing="0">
                                <!-- Body content -->
                                <tr>
                                    <td class="content-cell">
                                        {{ Illuminate\Mail\Markdown::parse($slot) }}

                                        {{ $subcopy ?? '' }}
                                    </td>
                                </tr>
                            </table>
                        </td>
                    </tr>

                    {{ $footer ?? '' }}
                </table>
            </td>
        </tr>
    </table>
</body>
</html>

不知道它为什么要在邮件的html版本中调用Markdown::parse($slot)

如何在html电子邮件中扩展此视图?希望至少能得到默认的html模板而不必构建自己的..。

EN

回答 1

Stack Overflow用户

发布于 2018-10-22 10:02:26

当您需要HTML时,您正在查看减价组件。不要被生成的html目录所愚弄,因为它是标记电子邮件的HTML表示。

代码语言:javascript
复制
php artisan vendor:publish --tag=laravel-mail

此命令仅用于向应用程序发布标准的Markdown组件,以便您可以自定义Mardown电子邮件是如何呈现的(在HTML和纯文本中)。你想要HTML电子邮件,而不是标记,所以运行它对你来说是无用的。

它在电子邮件的html版本中调用Markdown::parse($slot),因为这是将Mardown解析为HTML发送标记电子邮件的HTML版本的方法。您正在查看Markdown组件。

我使用HTML电子邮件,这其实很容易。

只需像您应该的那样创建一个可邮件的(php artisan make:mail OrderShipped)。只需在return $this->view('your.email.layout');方法中执行build()

在您的your.email.layout中,只需像使用普通刀片模板那样做@extend('your.email.master.layout')即可。做一个@section('content')或任何你给它的名字,并设计你的刀片模板。

如果你有任何困难,请告诉我。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52896081

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档