Невозможно отправить xlsx как вложение в почтовой программе Rails
Я пытаюсь отправить электронное письмо с вложенным файлом, созданным пользователем.
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 ответ
Решение
Вам нужно указать режим или кодировку, чтобы он считывал файл в двоичном виде:
attachments[document.display_name] = File.read(document.public_filename, :mode => 'rb')
или же
attachments[document.display_name] = File.read(document.public_filename, :encoding => 'BINARY')