Rails 3.0.7 ActionMailer附件问题

问题描述

| 我正在尝试将文件附加到外发电子邮件,但附件大小最终为1个字节。我转发的附件总是以1字节大小(损坏)的电子邮件结尾。其他一切对我来说都还不错。 电子邮件信息从IMAP帐户中提取并存储在数据库中以供浏览。附件存储在文件系统中,其文件名存储为电子邮件的关联记录。 在视图中,有一个选项可以将电子邮件转发给其他收件人。它可以在Rails 2.3.8中工作,但是对于Rails 3,我不得不更改该方法的附件部分,所以现在看起来像...
def forward_email(email_id,from_address,to_address)
    @email = Email.find(email_id)
    @recipients = to_address
    @from = from_address
    @subject = @email.subject
    @sent_on = Time.Now
    @body = @email.body + \"\\n\\n\"

    @email.attachments.each do |file|
      if File.exist?(file.full_path)
        attachment :filename => file.file_name,:body => File.read(file.full_path)
      else
        @body += \"ATTACHMENT NOT FOUND: #{file.file_name}\\n\\n\"
      end
    end
end
我也尝试过...
attachments[file.file_name] = File.read(file.full_path)
添加:mime_type和:content_type无济于事。 任何帮助将不胜感激。 谢谢!     

解决方法

这就是我为我努力的工作
 attachments.each do |file|
      attachment :content_type => MIME::Types.type_for(file.path).first.content_type,:body => File.read(file.path) 
 end
    ,文件可读吗?您可以通过放置这样的东西来调试问题吗?
logger.debug \"File: #{file.full_path.inspect} : #{File.read(file.full_path).inspect[0..100]}\"
您的development.log中有什么吗?     ,好吧,来自Rails团队的人回答了我的问题。问题在于除了方法内部的附件之外,添加正文内容(@body)。如果要附加文件,则必须使用视图模板。     

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...