Невозможно отправить xlsx в качестве вложения в Rails - PullRequest
3 голосов
/ 14 марта 2012

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

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 Ответ

4 голосов
/ 14 марта 2012

Вам нужно указать режим или кодировку, чтобы он мог читать файл в двоичном виде:

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

или

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