如何正确发送带有 10 月CMS 的纯文本替代的 HTML 邮件?



我正在使用十月的邮件门面来发送电子邮件。在文档中写道:

默认情况下,假定提供给 send 方法的视图包含 HTML。但是,通过将数组作为第一个参数传递给 send 方法,除了 HTML 视图之外,还可以指定要发送的纯文本视图:

Mail::send(['acme.blog::mail.html', 'acme.blog::mail.text'], $data, $callback);

但是当我这样做时,mail.text 视图文件被忽略了。对于邮件的纯文本部分,还使用邮件.html视图文件,其中包含换行前的<br />

我错过了什么吗?还是这是一个错误?

我的代码:

$vars = ['msg' => 'Hello world'];
Mail::send(
['text' => 'respective.test::mails.text', 
'html' => 'respective.test::mails.html'],  
$vars, function($message) { 
$message->to('name@example.com'); 
$message->subject('Test message');
});

我尝试过有和没有数组键。第一个视图文件始终用于这两个部分。我认为,这是一个错误。

我相信数组中项目的顺序很重要。文档说:

默认情况下,假定提供给 send 方法的视图包含 .HTML。但是,通过将数组作为第一个参数传递给发送 方法,除了 网页视图:Mail::send(['acme.blog::mail.html', 'acme.blog::mail.text'], $data, $callback);

措辞表明数组中的第一项将是html,第二项将是text。即使它不是明确的。


以防万一有人对OP的答案感到困惑。邮件模板文件可以在一个文件中保存标题、文本、html,由==分隔。

subject = "Your product has been added to OctoberCMS project"
==
Hi {{ name }},
Good news! User {{ user }} just added your product "{{ product }}" to a project.
This message was sent using no formatting (plain text)
==
<p>Hi {{ name }},</p>
<p>Good news! User {{ user }} just added your product <strong>{{ product }}</strong> to a project.</p>
<p>This email was sent using formatting (HTML)</p>

https://octobercms.com/forum/post/mail-with-plain-text-alternative mjauvin 给出了一个对我有用的答案:

我不知道,但您可以在同一个视图文件中同时拥有两个视图(纯文本和 html(。

最新更新