无法在Rails邮件程序中将xlsx作为附件发送

时间:2012-03-13 22:59:18

标签: ruby-on-rails ruby mime-types actionmailer attachment-fu

我正在尝试发送包含用户创建的文件附件的电子邮件。

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 }

如何使代码适用于所有附件类型?

1 个答案:

答案 0 :(得分:4)

您需要指定模式或编码,以便将文件读取为二进制文件:

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

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