2012-04-25 95 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

相關問題