ruby-on-rails – Rails ActionMailer附件显示为乱码文本
发布时间:2020-12-17 03:59:55 所属栏目:百科 来源:网络整理
导读:我正在尝试在我的一个rails应用程序中发送pdf附件,但附件是作为文本而不是正确的pdf. 我的邮件看起来像这样: class Notifications ActionMailer::Base def contact(email_params,sent_at = Time.now) subject "" email_params[:subject] recipients "" emai
我正在尝试在我的一个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,以及我的views目录中的contact.html.erb.只是复制文件,并重命名它工作.但是,现在邮件正文为空.只显示附件. 解决方法
仅供参考,我遇到了同样的问题,在我的情况下,解决方案是交换附件和邮件行.首先附上,然后打电话给邮件.
错误 def pdf_email(email,subject,pdfname,pdfpath) mail(:to => email,:subject => subject) attachments[pdfname] = File.read(pdfpath) end 好 def pdf_email(email,pdfpath) attachments[pdfname] = File.read(pdfpath) mail(:to => email,:subject => subject) end (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |