无法将XLSX发送为Rails Mailer中的附件
-
13-12-2019 - |
题
我正在尝试发送包含由用户创建的文件附件的电子邮件。
attachments[document.display_name] = File.read(document.public_filename)
.
此工作在大多数条件(包括.docx,但失败,但具有错误的.xlsx文件:
invalid byte sequence in UTF-8
.
我正在使用附件_fu上传附件,而delayed_job要推迟发送电子邮件,但我正在尝试附加的文件看起来正常,我可以在应用程序外成功打开它。
我还看到了一个如下更改代码的建议,但它似乎没有帮助: 包括额外的。
attachments[document.display_name] = { :content => File.read(document.public_filename), :transfer_encoding => :binary }
.
如何为所有附件类型进行代码工作?
解决方案
您需要指定模式或编码,以便将文件读为二进制文件:
attachments[document.display_name] = File.read(document.public_filename, :mode => 'rb')
.
或
attachments[document.display_name] = File.read(document.public_filename, :encoding => 'BINARY')
. 不隶属于 StackOverflow