【发布时间】:2015-08-08 07:09:58
【问题描述】:
我正在尝试做一个“简单”的事情,需要发送一个风格化的电子邮件,不想只发送文本,需要插入 HTML 标签和 CSS。在使用 CakePHP 之前,我使用的是 PHPMailer,在那里我可以发送带有 HTML 和 CSS 的电子邮件。
我正在开发一个使用 CakePHP 框架的项目。 在文档中,在我看来,他可以像我一样发送带有嵌入式 CSS 的电子邮件,但所有发送的电子邮件都带有 HTML 标记,就像它们是简单的文本一样显示。
$ Email = new CakeEmail ('smtp');
$ Email-> template ('contact');
$ Email-> emailFormat ('html');
$ Email-> to ('****************');
$ Email-> subject ('Contact - Contact Us');
$ Email-> viewVars (array ('contact' => $ this-> request-> data));
$ Email-> send ();
这是我用来发送电子邮件和查看的代码:
<Html>
<Body>
<P> <strong> Contact Received </ strong> </ p>
? <P> Date: <strong> <? Php echo date ("d / m / Y"); ?> </ Strong> </ p>
<P> Name: <strong> </ strong> </ p> <? Php echo $ contact ['Contact'] ['name']?>
<P> Telephone: <strong> <? Php echo $ contact ['Contact'] ['phone']?> </ Strong> </ p>
<P> Email: <strong> <? Php echo $ contact ['Contact'] ['email']> </ strong> </ p>
<P> Subject: <strong> <? Php echo $ contact ['Contact'] ['subject']?> </ Strong> </ p>
<P> Message: <strong> <? Php echo $ contact ['Contact'] ['message']?> </ Strong> </ p>
</ Body>
但是当我将参数$email-> emailFormat ('html'); 发送到的消息留空时,当我删除此参数时,将默认(文本)消息与屏幕上的 HMTL 一起到达,就好像它是纯文本一样,如果我把它放到“两者”什么都不做。
这个布局:
<?php echo $this->fetch('content'); ?>
【问题讨论】:
-
这里有几种方法。使用 CSS-inline 包为你做这件事(他们就在那里)。这在视图类中可能是合适的,然后使用该类的电子邮件将自动 css-inline 呈现的内容。另一种方法是使用一个助手,它只对返回带有内联 css 的 html 的项目(按钮等)具有特殊方法。编辑:在我注意到它正在打印 html 之前,我先阅读了标题。我会留下评论,因为我觉得它很有用。至于打印 HTML,您的电子邮件客户端是否配置为接收 HTML?
-
@jeremyharris 你好,我不知道我是否明白你的意思。但是电子邮件收到这些测试电子邮件是 gmail,当我在另一家公司使用 phpmailer 时,我可以在没有他的情况下发送 html,以纯文本形式编写......带有内联 css 的电子邮件,他可以解释这一点,我相信问题出在 mimeType 或标题
-
使用
emailFormat发送为html 就足够了,不需要发送额外的标头。尝试使用基本 HTML,即<p>test</p>,然后从那里添加。还要确保您的视图没有<html>/<body>,因为您的 HTML 电子邮件 layout 可能已经有这些标签。 -
@jeremyharris 如果我发送
$email->send('<p> Hello </ p>')并且对模板行电子邮件的评论正确到达,即不显示标签 p,那么您对我有所帮助。但是当我添加模板时,不显示内容 -
最好编辑您的问题并包含更多信息,例如模板视图和模板布局。我无法通过 cmets 与您一起调试。
标签: php cakephp html-email