3

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

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

这适用于大多数情况(包括 .docx,但对于 .xlsx 文件失败并出现以下错误:

invalid byte sequence in UTF-8

我正在使用 attachment_fu 上传附件,并使用 delay_job 来推迟发送电子邮件,但是我尝试附加的文件看起来不错,我可以在应用程序之外成功打开它。

我还看到了一个将代码更改如下的建议,但它似乎没有帮助:包括一个额外的。

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

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

4

1 回答 1

4

您需要指定模式或编码以使其以二进制形式读取文件:

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

或者

attachments[document.display_name] =  File.read(document.public_filename, :encoding => 'BINARY')
于 2012-03-14T00:23:20.563 回答