4

我已经成功创建了一封在创建 Kase 时发送的电子邮件,但现在我需要附加一个由 Prawn 和 Prawno 动态创建的 PDF。基本上,当您访问诸如 application.com/kase/1 之类的 kase 时,您只需将 URL 附加到 .pdf 即 application.com/kase/1。

我花了很长时间让 PDF 工作并查看我想要的方式,但我无法弄清楚如何将 PDF 添加到自动发送的电子邮件中 ​​- 主要是因为我无法弄清楚如何给它一个链接,因为它是自动生成的。

有没有人设法让它工作?

谢谢,

丹尼

4

4 回答 4

3

你真的应该考虑不使用 Prawnto,并创建一个 Prawn::Document 的子类来做你需要的事情。然后,在您的控制器和邮件程序代码中,它应该是:

MyReport.new.render

请参阅 Prawn 文档:

http://wiki.github.com/sandal/prawn/using-prawn-in-rails

于 2010-05-02T13:19:14.193 回答
3

我想如果您将生成的 pdf 存储在某处会更好 - 用于缓存等目的。但是使用当前配置,您可以读取生成的页面Net::HTTP并附加响应:

require 'net/http'

def your_mailer_method(record)
  #...
  attachment "application/pdf" do |a|
    a.body = Net::HTTP.get('yourdomain.com', "/kase/#{record.id}.pdf")
    a.filename="your_pdf_name.pdf"
  end  
end
于 2010-04-28T22:31:05.243 回答
0

对于较新的,你真的不需要再次发送请求,当你可以::

mail.attachments["invoice.pdf"] = {:mime_type => "application/pdf" , :content => pdf_generator}

而不是这样做::

send_data pdf.render , :filename => file_name_here , :type => "application/pdf"

就这样做::

pdf.render , :filename => file_name_here , :type => "application/pdf"

不要send_data,只需在您的电子邮件附件中呈现该 pdf,如第一个片段中所述。

事实上,我只是在 github 上写了一个 Gist。

于 2012-04-22T10:42:56.257 回答
0

这段代码对我有用

def send_file(file, subject, text, to_email)
      @subject = subject
      @text = text
      attachments["#{invoice.invoice_number}.pdf"] = file
      from_email = abc@xyz.com      
mail(:to => to_email, :from => from_email, :subject=> subject)
  end
于 2014-03-04T07:09:14.983 回答