CakePHP emailFormat('both') 与 emailFormat('html') 和 emailFormat('text')

CakePHP emailFormat('both') vs emailFormat('html') and emailFormat('text')

在 cakephp 文档中指出,如果您这样设置,则可以同时使用文本文件和 html 模板文件:

$email = new Email();
$email
    ->template('welcome', 'fancy')
    ->emailFormat('both')
    ->to('bob@example.com')
    ->from('app@domain.com')
    ->send();

这将使用以下模板文件:

src/Template/Email/text/welcome.ctp   
src/Template/Layout/Email/text/fancy.ctp   
src/Template/Email/html/welcome.ctp   
src/Template/Layout/Email/html/fancy.ctp

这里如何同时使用html和文本文件?创建视图时是否同时检查文本文件和 html 文件?如果这些模板存在差异怎么办?

当设置 emailFormatboth 时,CakePHP 会将两个模板放入电子邮件中,并将消息的 Content-type header 设置为 multipart/alternative。通过这种行为,接收端将获得同一消息的两个版本,并且能够选择使用哪个版本。

这意味着您可以向可以显示它的用户提供丰富而华丽的 HTML 版本的电子邮件,还可以提供简单的纯文本版本的邮件,供无法(或拒绝)呈现 HTML 封电子邮件。

更多信息,请查看this question and answer, as well as at RFC