所以我试图用Laravel5.6发送一封html电子邮件,并遇到一些有趣的问题。
首先,当涉及到定制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 /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>不知道它为什么要在邮件的html版本中调用Markdown::parse($slot)。
如何在html电子邮件中扩展此视图?希望至少能得到默认的html模板而不必构建自己的..。
发布于 2018-10-22 10:02:26
当您需要HTML时,您正在查看减价组件。不要被生成的html目录所愚弄,因为它是标记电子邮件的HTML表示。
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')或任何你给它的名字,并设计你的刀片模板。
如果你有任何困难,请告诉我。
https://stackoverflow.com/questions/52896081
复制相似问题