2015-12-03 33 views
1

試圖在Twig文件中構建響應電子郵件模板。在Symfony應用程序中使用Swiftmailer發送電子郵件。到目前爲止,我遇到的兩個問題是,當我在本地主機上查看電子郵件時,只顯示圖像,而不是在Gmail,Inbox或Yahoo!中查看電子郵件時顯示的圖像。Twig文件中的響應電子郵件模板

使用絕對路徑(當前)鏈接圖像。此外,嘗試了相同的結果相同的路徑。

<img src="{{ absolute_url(asset('bundles/coreecommerce/images/logo.png')) }}"> 

問題2包括樣式表。我在樣式表中包含一些媒體查詢,我試圖在這樣的頭標中加入。

{% block stylesheets %} 
    <link href="{{ asset('bundles/coreecommerce/css/email.css') }}" rel="stylesheet" /> 
    {% endblock %} 

我在這裏做錯了事。只是不確定是什麼?您是否可以在Twig中包含樣式表,內聯樣式以用於響應電子郵件?

感謝您的任何幫助。

+0

無論使用Gmail,收件箱,而雅虎將全部採用外部資產阻止電子郵件,以防止從唯一生成的URL檢測視圖(例如,http://www.malicious.com/spamlink.php?email = bob @ hackme.com)。解決方法是將base64編碼爲圖像電子郵件和使用內聯CSS。 – sjagr

+0

而內聯CSS,我的意思是'style'屬性,_not_'style'標籤。 – sjagr

+0

會是這樣嗎? Brent

回答

0

要在html郵件中內嵌圖像,您應該查看this section of the documentation

爲了向你展示與樹枝的例子,你可以像這樣開始:

​​

然後在你枝杈模板你剛纔創建的模板變量IMG標籤:

<img src="{{ fileToEmbed }}"> 

因此,TL; DR只需要將$message->embed(\Swift_Image::fromPath($fileToEmbed))返回值傳遞給您的郵件模板並將其用作src屬性。


要找到你的包內的圖像文件,你可以使用Kernel::locateResource方法是這樣的(假設你的logo.png位於CoreEcommerceBundle/Resources/public/images/目錄):

$fileToEmbed = $this->kernel->locateResource('@CoreEcommerceBundle/Resources/public/images/logo.png'); 
+0

太棒了!謝謝。現在要包括我的樣式表。 – Brent

+0

@Brent,因爲它在上面的註釋中說過,所以你絕對不應該鏈接到郵件模板中的外部CSS。代之以內聯。有一個相當整潔的工具使我的Mailchimp將你的'