看起来很简单,但我一直无法使其正常工作。这些文件在Web应用程序中从S3正常工作,但是当我通过以下代码将它们发送到电子邮件时,这些文件会损坏。
应用程序堆栈:rails 3、heroku、paperclip + s3
以下是代码:
class UserMailer < ActionMailer::Base
# Add Attachments if any
if @comment.attachments.count > 0
@comment.attachments.each do |a|
require 'open-uri'
open("#{Rails.root.to_s}/tmp/#{a.attachment_file_name}", "wb") do |file|
file << open(a.authenticated_url()).read
attachments[a.attachment_file_name] = File.read("#{Rails.root.to_s}/tmp/#{a.attachment_file_name}")
end
end
end
mail( :to => "#{XXXX}",
:reply_to => "XXXXX>",
:subject => "XXXXXX"
)
a.authenticated_url() 只是给我一个访问s3文件的URL(任何类型的文件),我已经检查过了,可以正常工作。可能是我保存临时文件的方法破坏了ActionMailer附件的功能。有什么想法吗?