2012-03-13 30 views
3

我想發送一封電子郵件,其中包含用戶創建的文件附件。無法發送xlsx作爲Rails郵件附件

attachments[document.display_name] = File.read(document.public_filename) 

這在大多數條件下(包括.DOCX,但失敗與錯誤的.xlsx文件:

invalid byte sequence in UTF-8 

我使用attachment_fu上傳附件,delayed_job的推遲發送電子郵件不過我想附加的文件看起來不錯,我可以成功地打開它的應用程序之外

我還看到一個建議,修改代碼如下,但它似乎並沒有幫助。 包括一個額外的。

attachments[document.display_name] = { :content => File.read(document.public_filename), :transfer_encoding => :binary } 

如何讓代碼適用於所有附件類型?

回答

4

你需要指定模式或編碼讓它讀取文件爲二進制:

attachments[document.display_name] = File.read(document.public_filename, :mode => 'rb') 

attachments[document.display_name] = File.read(document.public_filename, :encoding => 'BINARY') 
+0

大,工作一種享受。謝謝。 – niciliketo 2012-03-14 10:47:05

相關問題