用actionmailer发送包含某些PDF文件附件的电子邮件的正确语法是什么?我将Gmail与TLS插件一起用于SMTP。这是我到目前为止的内容(也已经尝试过对此进行变形):
**lead_mailer.rb:**
def auto_response(lead)
recipients lead.email
subject "Information"
body :recipient => lead.first_name
from "[email protected]"
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
问题在于,它发送附件,但是即使打开后它们也会正确显示,但它们却显示为“no name”。但是,电子邮件的正文根本不会出现。我确定我在做简单,错误的事情。
最佳答案
好吧,我走了片刻,然后回来,用谷歌搜索了一下,得到了答案!
从API:
如果已将任何附件或零件添加到电子邮件中,则不会执行隐式模板渲染。这意味着您必须手动将每个部分添加到电子邮件中,并将电子邮件的内容类型设置为多部分/替代。
对于主要的mailer方法,我切换出body并添加此显式渲染。注意-我跳过了多部分/替代项,它起作用了,很可能是因为我发送的是纯文本电子邮件。
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
关于ruby-on-rails - ActionMailer问题-发送PDF附件的正确语法是什么,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/529970/