Domanda

Sto cercando di inviare un'email contenente un allegato file creato dall'utente.

attachments[document.display_name] =  File.read(document.public_filename)
.

funziona nella maggior parte delle condizioni (incluso .docx, ma non riesce per i file .xlsx con l'errore:

invalid byte sequence in UTF-8
.

Sto usando attachment_fu per caricare gli allegati e ritardardo_job per differire l'invio delle e-mail, tuttavia il file che sto cercando di attaccare sembra OK, e posso aprirlo con successo all'esterno dell'applicazione.

Ho anche visto un suggerimento per cambiare il codice come segue, ma non sembra aiutare: includere un extra.

    attachments[document.display_name] =  { :content => File.read(document.public_filename), :transfer_encoding => :binary }
.

Come posso effettuare il codice del codice per tutti i tipi di allegati?

È stato utile?

Soluzione

È necessario specificare la modalità o la codifica per consentire a leggere il file come binario:

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

o

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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top