【发布时间】:2012-02-23 22:02:57
【问题描述】:
我正在尝试在我的一个 Rails 应用程序中发送 pdf 附件,但附件以文本而不是正确的 pdf 形式出现。
我的邮件如下所示:
class Notifications < ActionMailer::Base
def contact(email_params, sent_at = Time.now)
subject "" << email_params[:subject]
recipients "" << email_params[:client]
from "#{email_params[:name]} <#{email_params[:address]}>"
attachments['invoice.pdf'] = File.read("#{Rails.root.to_s}/public#{email_params[:attach]}") unless email_params[:attach].blank?
sent_on sent_at
body :message => email_params[:body], :sender_name => email_params[:name]
end
end
以及我在邮件收件箱中收到的内容:
--
Date: Thu, 23 Feb 2012 13:50:58 -0800
Mime-Version: 1.0
Content-Type: text/plain;
charset=UTF-8
Content-Transfer-Encoding: 7bit
Content-ID: <[mailserver]>
Message Body
--
Date: Thu, 23 Feb 2012 13:50:58 -0800
Mime-Version: 1.0
Content-Type: application/pdf;
charset=UTF-8;
filename=invoice.pdf
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
filename=invoice.pdf
Content-ID: <[mailserver]>
后面跟着一串很长的ascii字符
如果没有任何附件,则不会发送标题信息,我只会在收件箱中收到“邮件正文”部分。我怀疑我的 mailer.rb 中附件行的 File.read() 部分是罪魁祸首,但它指向我服务器上的一个有效 pdf 文件,我可以通过浏览器访问该文件。日志只说邮件是使用正确的参数发送的,但它是以反编译文本的形式发送的,或者类似于您在纯文本编辑器中打开 pdf 的内容。
邮件程序视图contact.html.erb 很简单:<%= @message %> 如果有帮助的话。
知道我可能做错了什么吗?
谢谢。
更新:
显然,我的视图目录中同时需要contact.erb 和contact.html.erb。只需复制文件并重命名即可。但是,现在消息正文是空白的。仅显示附件。
【问题讨论】:
标签: ruby-on-rails actionmailer