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?

Foi útil?

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
scroll top