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 文件?如果这些模板存在差异怎么办?
当设置 emailFormat
为 both
时,CakePHP 会将两个模板放入电子邮件中,并将消息的 Content-type header 设置为 multipart/alternative
。通过这种行为,接收端将获得同一消息的两个版本,并且能够选择使用哪个版本。
这意味着您可以向可以显示它的用户提供丰富而华丽的 HTML 版本的电子邮件,还可以提供简单的纯文本版本的邮件,供无法(或拒绝)呈现 HTML 封电子邮件。
更多信息,请查看this question and answer, as well as at RFC。
在 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 文件?如果这些模板存在差异怎么办?
当设置 emailFormat
为 both
时,CakePHP 会将两个模板放入电子邮件中,并将消息的 Content-type header 设置为 multipart/alternative
。通过这种行为,接收端将获得同一消息的两个版本,并且能够选择使用哪个版本。
这意味着您可以向可以显示它的用户提供丰富而华丽的 HTML 版本的电子邮件,还可以提供简单的纯文本版本的邮件,供无法(或拒绝)呈现 HTML 封电子邮件。
更多信息,请查看this question and answer, as well as at RFC。