Как использовать и настроить электронную почту в формате HTML (не уценку) в Laravel 5.6? - PullRequest
0 голосов
/ 19 октября 2018

Итак, я пытаюсь отправить html-письмо в Laravel 5.6 и сталкиваюсь с некоторыми забавными проблемами.

С одной стороны, документация довольно ужасна, когда дело доходит до настройки содержимого HTML или даже использованияHTML-макет по умолчанию.

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

В разделе «Настройка представления» есть раздел, в котором говорится, что нужно просто сделать что-то вроде следующего.

return $this->view('emails.orders.shipped');

Круто, я делаю это.В моем блейд-файле у меня просто

Here is a test message.

И он отправляет просто отлично.Но что не имеет никакого смысла, так это то, что на странице также написано, что вы можете запустить следующую команду ремесленника, чтобы сгенерировать шаблон электронной почты по умолчанию.

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

Он говорит: «Почтовый каталог будет содержать HTML и разметкукаталог, каждый из которых содержит свои соответствующие представления каждого доступного компонента. Компоненты в каталоге html используются для создания HTML-версии вашей электронной почты. "

В документации также подробно рассказывается о том, как настраивать и использовать эти уценки.шаблоны.Вы просто вызываете @component('mail::message') в верхней части файла блейда уценки ... но Я не хочу уценки .Я просто хочу обычную электронную почту в формате HTML.

@component('mail::message') не работает при использовании ->view() только при использовании ->markdown().Я также не могу просто сделать следующее.

@extends('vendor.mail.html.layout')
Test message

Как говорится, слот - это неопределенная переменная в журнале ошибок.

Не уверен почему, файл layout.blade.phpв каталоге / vendor / mail / html / содержится следующее ...

<!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>

Не уверен, почему он вызывает Markdown::parse($slot) в html-версии письма.

Как мнеидти о расширении этого представления в HTML-письмо?Хотел, по крайней мере, получить шаблон HTML по умолчанию, не создавая свой собственный ...

1 Ответ

0 голосов
/ 22 октября 2018

Вы просматриваете компоненты уценки, когда хотите HTML.Не дайте себя одурачить сгенерированным каталогом html, потому что это HTML-представление вашего электронного сообщения об уценке.

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

Эта команда предназначена только для публикации стандартных компонентов Markdown в вашем приложении, поэтому вы можете настроить способ Mardown.электронные письма отображаются (в HTML и в виде открытого текста).Вы хотите электронные письма HTML, а не уценку, поэтому запуск, который бесполезен для вас.

Он вызывает Markdown::parse($slot) в html-версии электронного письма, потому что это способ анализа 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') или любое другое имя, которое вы ему дали, и спроектируйте свой шаблон лезвия.

Если у вас возникли какие-либо трудности, дайте мне знать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...