Rails 5.0.1 - 带有 MailGun 的 ActionMailer,在直接附加 base64 字符串时为文件名设置 'noname'

Rails 5.0.1 - ActionMailer with MailGun, setting 'noname' for filename when directly attaching base64 string

我已经阅读了完整的官方指南 here 以及关于 Rails 3 和 Rails 4 的关于 SO 的大约 5 个问题。

This question 用于 Rails 5,但他使用的是实际文件,而不是编码字符串。

这是我的邮件程序代码(是的,我有两个视图设置)。电子邮件顺利通过,并附有 PDF。

  def pdf_quote(proposal)
    @proposal = proposal
    email_with_name = %("#{@proposal.first_name} #{@proposal.last_name}" <#{@proposal.email}>)
    filename = "QD-#{@proposal.qd_number}_#{@proposal.last_name}.pdf"
    attachments[filename] = {
      mime_type: 'application/pdf',
      encoding: 'Base64',
      content: @proposal.pdf_base64
    }  
    mail(
      to: email_with_name,
      from: 'Floorbook UK <email address>',
      subject: 'Your Personal Flooring Quote is attached',
      sent_on: Time.now
      )    
  end

在 gmail 中,附件称为 'noname',在邮箱中称为 'pb_mime_attachment.pdf'

如何让 ActionMailer 使用我提供的文件名?

请注意,我使用的是 MailGun (mailgun-ruby gem 1.1.4) 发送电子邮件,所以这里可能是 gem 的问题。

原来是第 3 方 mailgun 的一个错误-ruby gem.

我向他们提出了一个错误,详细信息如下: https://github.com/mailgun/mailgun-ruby/issues/82

在 1.1.5 版本中已修复(我测试过)。