Action Mailer attachments.inline显示为正常附件,而不是内联

时间:2013-06-26 16:17:52

标签: ruby-on-rails ruby email attachment actionmailer

  def simple_mail(to, subject, body)
   attachments.inline['Logo.png'] = File.read( Rails.root.join("public", "Logo.png"))
   mail(:to => to, :subject => subject, :body => body)
 end

我收到了邮件的附件,但它不是“内联”图片。如何附加内联,如何选择它的位置?

我看到的例子有他们邮件的观点..看起来我可能需要设置它们。如果是这样,我如何将Action Mailer视图链接到消息?

2 个答案:

答案 0 :(得分:1)

正如您在guides.rubyonils中看到的那样,您可以将视图链接到邮件程序,就像将视图链接到控制器的操作一样。如果您的邮件程序名为my_mailer,并且您的邮件程序操作名为simple_mail,则在app / views / my_mailer /中创建一个视图,并将其命名为“simple_mail.html.erb”。同样,您可以创建“simple_mail.text.erb”以确保如果收件人无法接收HTML电子邮件,则会获得纯文本版本(请参阅下面的action_mailer_basics.html)。

至于内联附件,之前提出了一个关于观点的不同问题(参见this link),scaney回答了几个链接。查看this link并在文本中搜索“内联”,您应该找到所需的答案!

http://guides.rubyonrails.org/action_mailer_basics.html

api.rubyonrails.org/classes/ActionMailer/Base.html

答案 1 :(得分:0)

1)要设置邮件的动作邮件视图,您可以按如下方式执行:

在app / views / mailer_name /中创建一个与邮件程序操作同名的视图文件(在本例中为“simple_mail”)

或者,如果你想完全使用不同的视图,你也可以这样做:

def simple_mail(to, subject, body)
 attachments.inline['Logo.png']=File.read( Rails.root.join("public", "Logo.png"))
 mail(:to => to, :subject => subject, :body => body) do |format|
      format.html { render :partial => "/path/to/partial"}
   end
end

在上述情况下,部分内容将呈现为邮件正文。

2)要附加内嵌图片,您还需要在邮件程序操作视图文件中提及附件,如下所示:

<%= image_tag attachments['Logo.png'].url %>