3

使用包含一些 PDF 文件附件的 actionmailer 发送电子邮件的正确语法是什么?我正在使用带有 TLS 插件的 Gmail 用于 SMTP。这是我到目前为止所拥有的(并且也尝试过这种变化):

**lead_mailer.rb:**

  def auto_response(lead)
    recipients  lead.email
    subject     "Information"
    body        :recipient => lead.first_name
    from        "me@mydomain.com"
    attachment  "application/pdf" do |a|
                a.body = File.read(RAILS_ROOT + "/public/files/Datasheet.pdf")
    end
    attachment  "application/pdf" do |a|
                a.body = File.read(RAILS_ROOT + "/public/files/OtherSheet.pdf")                
    end
  end

**lead_observer.rb:**

class LeadObserver < ActiveRecord::Observer
  def after_save(lead)
    mail = LeadMailer.create_auto_response(lead)
    LeadMailer.deliver(mail)
  end
end

问题是它发送了附件,但它们显示为“无名”,即使在打开它们时它们显示正确。但是,电子邮件的正文根本不会出现。我确定我在做一些简单的、错误的事情。

4

1 回答 1

3

好的,我离开了一会儿,然后回来再用谷歌搜索了一下,得到了答案!

从 API:

如果任何附件或部分已添加到电子邮件中,则不会执行隐式模板呈现。这意味着您必须手动将每个部分添加到电子邮件中,并将电子邮件的内容类型设置为 multipart/alternative。

对于主要的邮件方法,我切换了正文并添加了这个显式渲染。注意-我跳过了 multipart/alternative 并且它起作用了,很可能是因为我正在发送纯文本电子邮件。

part        :body => render_message('auto_response', :recipient => lead.first_name) 

对于附件命名问题,这就是我所做的:

attachment  "application/pdf" do |a|
                a.body = File.read(RAILS_ROOT + "/public/files/OtherSheet.pdf") 
                a.filename = "Othersheet.pdf"  
end
于 2009-02-09T21:48:40.083 回答