我有一个ActionMailer设置,用于发送带有S3附件的电子邮件。我是这样做的:
def job_apply(current_tenant, applicant)
@current_tenant = current_tenant
@applicant = applicant
file = open(applicant.resume.url).read
attachments[applicant.resume] = file
email_with_name = "#{@current_tenant.name} <#{@current_tenant.help_email}>"
mail(from: email_with_name, to: applicant.job.apply_email, subject: "New Job Application")
end
applicant.resume.url返回一个正确的URL,我可以在浏览器中打开并检索文件,但是我收到以下错误:
Message undefined method `ascii_only?' for #<ApplicantResumeUploader:0x007fe6bc5c28a8>
File /Users/cmalpeli/.rvm/gems/ruby-1.9.3-p194@job_board/gems/mail-2.4.4/lib/mail/encodings.rb
Line 103
这是encodings.rb中的代码:
98 def Encodings.decode_encode(str, output_type)
99 case
100 when output_type == :decode
101 Encodings.value_decode(str)
102 else
103 if str.ascii_only?
104 str
105 else
106 Encodings.b_value_encode(str, find_encoding(str))
107 end
108 end
我从这里离开的地方有点不知所措......
任何帮助将不胜感激......
答案 0 :(得分:4)
问题在于applicant.resume
中的attachments[applicant.resume]
字符串。如果这不是一个字符串(如JavaScript对象),并且不是可以表示您附加到电子邮件的文件的文件名,那么这将导致ActionMailer出现问题。
在继续操作之前,请确认applicant.resume
字符串确实是foo.pdf
或resume.doc
等文件名。