我有一個ActionMailer安裝程序發送電子郵件與附件從S3。我這樣做是這樣的:附加遠程URL文件作爲附件在行動郵件程序
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返回,我可以在瀏覽器中打開,並檢索與該文件一個正確的網址,但我收到以下錯誤:
Message undefined method `ascii_only?' for #<ApplicantResumeUploader:0x007fe6bc5c28a8>
File /Users/cmalpeli/.rvm/gems/[email protected]_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
我在一個小的損失在何處何去何從的...
任何幫助,將不勝感激...
如果你註釋掉'attachments [applicant.resume] = ...'這行是否正確發送電子郵件?如果是這樣,「applicant.resume」的內容是什麼?它應該是一個像'resume.pdf'或'resume.doc'這樣的文件名字符串。 – mccannf
是的 - 如果我發表評論,它會發送正確的信息。 「applicant.resume」的價值就像「resume.doc」。 'applicant.resume.url'的值就像'something.cloudfront.net/uploads/applicant/resume/10/resume.doc'。在瀏覽器中打開路徑啓動文件的下載。 – cman77
您的問題回答了我正面臨的一個問題:)謝謝!我正在使用'open(...)'而不是'open(...)。read'。我希望你也能得到答案 – Cristian