2012-05-04 39 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”有什么差别。