使用Grails在电子邮件中发送图像

时间:2012-05-04 08:59:39

标签: image email grails

我使用Grails mail plugin发送电子邮件,我想在电子邮件正文中发送图片,而不是附件。我想要的是将图像显示在电子邮件正文中,就像在简报中一样。我试过了:

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张图片,我该怎么做?

3 个答案:

答案 0 :(得分:13)

你必须做三件事

  1. 将邮件声明为multipart
  2. 将图像附加为内嵌图像
  3. 从邮件模板中引用内联图片
  4. 根据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" />
    

    希望有所帮助。

答案 1 :(得分:0)

通常,大多数“简报”类型的电子邮件只是HTML电子邮件,不会在电子邮件正文中内嵌图像。实际上,许多电子邮件服务器将直接拒绝过大的电子邮件,将图像数据放入电子邮件正文中可以轻松承担此风险。

相反,解决这个问题的方法就是将HTML电子邮件与您希望包含的图像作为普通的HTML图像链接。

有关如何发送HTML电子邮件的详细信息,请参阅Mail plugin documentation

答案 2 :(得分:0)

抱歉,我没有足够的Stackoverflow积分来对其他人发表评论&#39;答案。

在@aiolos的回答中,它包含:

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

这指定了&#39; image / jpg&#39;作为输出,但文件是png格式。这是故意的吗?

维基百科提供了一个mime类型列表:http://en.wikipedia.org/wiki/Internet_media_type#Type_image

我试过&#39; image / png&#39;并且它有效,所以我不确定是否将它设置为&#39; image / jpg&#39;有所作为。