2012-05-04 36 views
4

我正在使用Grails mail plugin發送電子郵件,並且我想在電子郵件正文中發送圖像,而不是作爲附件。我想要的是將圖像顯示在電子郵件正文中,如通訊中所示。我嘗試過:通過電子郵件向Grails發送圖像

img style="display:block; height:100px; width:100; " alt="candle" 
src="http://www.xyz.com//Candle_4.jpg"> 

但它是按原樣顯示的。

我還使用維基格式的嘗試:

[[:File:Example.jpg]]<br/> 
[[Special:FilePath/Example.jpg]] 

卻又似乎都鏈接到外部。

我在做什麼錯?

這是電子郵件模板,我使用:

<img src="cid:springsourceInlineImage" /> Dear [username],<br/> 
Thank you for shopping with us.<br/> 
You have placed a new order with following details.<br/> 
[details]<br/> 
Happy shopping! 

但是,如果我想把10個圖像我的模板,我會怎麼做呢?

回答

13

你必須做三件事

  1. 聲明郵件爲多
  2. 附上您的圖像作爲內嵌圖像
  3. 參考你從你的郵件模板

內嵌圖像。根據this郵件列表線程它應該像這樣工作:

sendMail{ 
    multipart true 
    to "[hidden email]" 
    subject "Subject goes here" 
    html g.render(template: '/emails/mailTemplate') 
    inline 'springsourceInlineImage', 'image/jpg', new File('./web-app/images/springsource.png') 
} 

在您的模板,你可以參考這樣的

<img src="cid:springsourceInlineImage" /> 

希望有所幫助的形象。

+0

什麼是cid?它需要設置?因爲現在代碼** **出現在電子郵件中。即。仍然沒有顯示.. – zade

+0

'cid'方案代表'content-ID',用於標識多部分郵件的特定部分。希望的圖像是否附加到郵件中?如果所提供的代碼是您的郵件的整個HTML源代碼,則看起來您沒有完整的郵件模板。 – aiolos

+0

對於遲到的回覆,實際上現在圖像在我的郵箱中,但是作爲「noname」的附件,而且「」這一行仍然顯示爲它原來的樣子。 – zade

0

一般來說,大多數「通訊」類型的電子郵件只是HTML電子郵件,並不會在電子郵件正文內嵌入圖像。事實上,許多電子郵件服務器將會拒絕拒絕太大的電子郵件,並且將圖像數據放在電子郵件正文中可能很容易發生這種風險。

取而代之的是,只有HTML電子郵件中包含您希望作爲普通HTML圖像鏈接包含的圖像。

有關如何發送HTML電子郵件的更多信息,請參閱Mail plugin documentation

0

對不起,我沒有足夠的Stackoverflow留言來評論他人的回覆。

在@aiolos的答案,它包含:

inline 'springsourceInlineImage', 'image/jpg', new File('./web-app/images/springsource.png') 

此指定 '圖像/ JPG' 作爲輸出,但該文件是PNG格式。這是故意的嗎?

維基百科提供的MIME類型的列表:http://en.wikipedia.org/wiki/Internet_media_type#Type_image

我想「圖像/ PNG」和它的工作,所以我不知道,如果將其設置爲「圖像/ JPG」有什麼差別。