Не удается отправить XLSX как вложение в Rails Mailer
-
13-12-2019 - |
Вопрос
Я пытаюсь отправить электронное письмо, содержащее приложение файла, созданное пользователем.
attachments[document.display_name] = File.read(document.public_filename)
.
Это работает в большинстве состояний (включая .docx, но не удается для файлов .xlsx с ошибкой:
invalid byte sequence in UTF-8
.
Я использую Attachment_fu, чтобы загрузить вложения и задержать_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