Não é possível enviar xlsx como anexo no mailer Rails
-
13-12-2019 - |
Pergunta
Estou tentando enviar um email contendo um anexo de arquivo criado pelo usuário.
attachments[document.display_name] = File.read(document.public_filename)
Isso funciona na maioria das condições (incluindo .docx, mas falha em arquivos .xlsx com o erro:
invalid byte sequence in UTF-8
Estou usando attachment_fu para fazer upload de anexos e atrasado_job para adiar o envio de e-mails, mas o arquivo que estou tentando anexar parece ok e posso abri-lo com sucesso fora do aplicativo.
Também vi uma sugestão para alterar o código da seguinte forma, mas não parece ajudar:inclua um extra.
attachments[document.display_name] = { :content => File.read(document.public_filename), :transfer_encoding => :binary }
Como posso fazer o código funcionar para todos os tipos de anexo?
Solução
Você precisa especificar o modo ou codificação para permitir a leitura do arquivo como binário:
attachments[document.display_name] = File.read(document.public_filename, :mode => 'rb')
ou
attachments[document.display_name] = File.read(document.public_filename, :encoding => 'BINARY')
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow