【问题标题】:Multiple attachements with ActionMailer?ActionMailer 的多个附件?
【发布时间】:2012-12-06 11:26:14
【问题描述】:

我正在使用 action mailer 成功发送带有一个 PDF 附件的电子邮件,但我现在需要在一封电子邮件中发送多个 PDF 附件。我曾希望我可以传递我的产品并循环,在每次迭代时渲染一个文件,但这似乎不起作用。任何人都可以在这里帮助指导我正确的方向吗?这是我尝试过的:

def sales_notes(products)

  products.each do |product|
    pdf = Salesnote.new(product, @user_role)
    @pdf_filename = "#{product.cat_no} - #{product.release.artists.map { |a| a.name}.join (", ")} - #{product.release.title}.pdf"
    mail.attachments[@pdf_filename] = pdf.render
  end  

  mail(:to => "me@mydomain.com", :subject => "SALES NOTES ATTACHED")


  end  

我也尝试过只使用attachments[@pdf_filename] 而不是mail.attachments[@pdf_filename]

提前致谢。

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3 actionmailer prawn


    【解决方案1】:

    ma​​il.attachments 中没有问题。检查@pdf_filename 值是否重复或具有多个值

    【讨论】:

    • @pdf_filename 应该始终是不同的,因为 cat_no 是我数据库中的唯一字符串。
    • 那你需要检查 pdf.render 在迭代时返回 nil 还是空白
    • 我刚刚收到一个名为“noname”的附件,没有扩展名。如果我在文本编辑器中打开它,我可以看到它的标题,它应该是一个 pdf,但似乎只适用于一个产品,而不是我在这个测试用例中期望的三个。
    • 那么@pdf_filename就是你需要检查的代码。通过硬编码一些值来尝试,这样您就可以在出现错误的区域获得清晰的图片
    • “noname”确实包含三组标题,它们似乎包含正确的文件名,所以@pdf_filename 对我来说似乎没问题。我仍然不明白为什么我将所有三个都呈现在“无名”文件中。这是“noname”Date: Thu, 06 Dec 2012 12:21:52 +0000 Mime-Version: 1.0 Content-Type: application/pdf; charset=UTF-8; filename=CD123456.pdf Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=CD123456.pdf 中的标头示例
    猜你喜欢
    • 1970-01-01
    • 2013-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多