2012-04-25 134 views
0

我为邮件模板创建了页面,并为预览模板设置了按钮。如何在cakephp中的电子邮件中添加公司徽标?

我已经设置图片的路径从我的本地机器一样,

src="/projectname/app/webroot/img/logo.JPG" 

,当我预览该模板它显示的标志。

使用该模板时,当我发送邮件图像不显示在电子邮件中。

所以任何人都可以告诉我可能是什么问题,或者我缺少像MIME类型的东西?

谢谢,

回答

2

这是行不通的。电子邮件是在客户端打开的,那么像“/projectname/app/webroot/img/logo.JPG”这样的路径对那个客户端意味着什么?什么是域名?

可以是域添加到SRC像SRC =“http://example.com/projectname/app/webroot/img/logo.JPG”。但这不会默认显示,因为这是一个安全风险。 想象一下垃圾邮件发送者,其中包括像src =“http://example.com/feedback?id=12345”这样的图像,其中每个电子邮件都标识了邮件发送到的每个电子邮件地址。每位下载此图片的客户都会确认收到此电子邮件,让垃圾邮件发送者知道您正在阅读垃圾邮件。大多数电子邮件客户端明确地询问您是否应下载邮件中引用的图像。

一种替代的解决方案是包括每个电子邮件作为附件的电子邮件,那么可以参考它作为一个“内联”的形象。这不需要外部连接,安全风险也较小,大多数情况下客户端默认情况下都是允许的。

我有谷歌了,理应支持还内嵌一个组成部分,但你可能会发现其他人也: http://bakery.cakephp.org/articles/CraZyLeGs/2006/12/18/swiftmailer-component-tutorial

+0

核心CakeEmail类也可以处理HTML邮件中的嵌入图像 – mark 2012-04-25 14:03:01

0

这可能是因为当您在本地计算机上测试时,该路径没问题。但是,如果您发送电子邮件给自己(例如gmail),那么您的浏览器可能会在http://mail.google.com/gmail/projectname/app/webroot/img/logo.JPG之类的地方查找图像,并且在那里找不到您的图像。 因此,您需要将图像源设置为http://localhost/projectname/app/webroot/img/logo.JPG

1

在电子邮件,您必须使用完整路径,而不是相对路径。要在CakePHP中做到这一点很容易,使用:FULL_BASE_URL常数与HTML Helper这样的:

<?php 
echo $this->Html->image(
    FULL_BASE_URL . $photo['Photo']['path'].$photo['Photo']['filename'] 
); 
?> 

(显然这可以在一个行完成,但我把它弄坏了下来便于阅读StackOverflow上)

0

电子邮件客户端需要图像的绝对路径;使用HTML辅助充分底座安装:

<?= $this->Html->image("logo.JPG", array('fullBase' => true)) ?> 

注意,使用HTML帮助时/projectname/app/webroot/img/不是必需的。

+0

这将回显没有主机名/协议的相对路径,并且不起作用。 – 2017-04-25 10:09:54

相关问题