Вопрос

Я пытаюсь отправить электронное письмо, содержащее приложение файла, созданное пользователем.

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')
.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top