No se puede enviar XLSX como un archivo adjunto en Railers Mailer
-
13-12-2019 - |
Pregunta
Estoy tratando de enviar un correo electrónico que contiene un archivo adjunto creado por el usuario.
attachments[document.display_name] = File.read(document.public_filename)
Esto funciona en la mayoría de las condiciones (incluyendo .docx, pero falla para archivos .xlsx con el error:
invalid byte sequence in UTF-8
Estoy usando Attachment_FU para cargar los archivos adjuntos, y retarted_job para diferir el envío de los correos electrónicos, sin embargo, el archivo que estoy tratando de adjuntar se ve bien, y puedo abrirlo correctamente fuera de la aplicación.
También vi una sugerencia para cambiar el código de la siguiente manera, pero no parece que ayuda: incluir un extra.
attachments[document.display_name] = { :content => File.read(document.public_filename), :transfer_encoding => :binary }
¿Cómo puedo hacer que el código funcione para todos los tipos de adjuntos?
Solución
Necesita especificar el modo o la codificación para que lea el archivo como binario:
attachments[document.display_name] = File.read(document.public_filename, :mode => 'rb')
o
attachments[document.display_name] = File.read(document.public_filename, :encoding => 'BINARY')