内嵌图像与红宝石邮件宝石

时间:2014-06-17 21:56:36

标签: ruby inline-images

很抱歉,如果我错过了一篇好文章,但我找不到一个很好的例子,说明如何使用ruby和邮件gem使用内嵌图像(我不使用RoR) 我能找到的最好的例子是here,但我不明白.cid方法的来源。

这里是上述帖子的摘录,其中使用了.cid方法。

html_part do
    content_type 'text/html; charset=UTF-8'
    body "<img width=597 height=162 id='Banner0' src='cid:#{pic.cid}'>"
end

我有邮件宝石工作,它可以发送图像作为附件,但我需要它们显示在电子邮件中,而无需打开附件。

2 个答案:

答案 0 :(得分:6)

邮件宝石维护得很好,所以查看documentation真有帮助。你提供的剪辑错过了一个不可或缺的部分:pic

的定义
pic = attachments['banner.png']

通过这些信息,您可以轻松找到attachments上的文档,这将产生这一点:

  

您还可以搜索特定附件:

# By Filename
mail.attachments['filename.jpg']   #=> Mail::Part object or nil

Mail::Part的文档中,您将找到cid方法的定义:

def cid
  add_content_id unless has_content_id?
  uri_escape(unbracket(content_id))
end

(遗憾的是,这种方法没有记录,但很容易推断出&#34; cid&#34;代表&#34;内容id&#34;)。

最后,RFC2557定义了CID URI的用法,以识别和引用电子邮件中的封装文档(如图像)。这是

body "<img ... src='cid:...'>"

来自。

答案 1 :(得分:1)

您也可以致电url

> mail.attachments[0].url
=> "cid:5eac50cfe27e2_373f3fed9e82e044326c3@Samuels-MacBook-Pro.local.mail"

> mail.attachments[0].cid
=> "5eac50cfe27e2_373f3fed9e82e044326c3@Samuels-MacBook-Pro.local.mail"