3

ユーザーが作成した添付ファイルを含むメールを送信しようとしています。

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 }

すべての添付ファイルタイプでコードを機能させるにはどうすればよいですか?

4

1 に答える 1

4

ファイルをバイナリとして読み取るには、モードまたはエンコーディングを指定する必要があります。

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

また

attachments[document.display_name] =  File.read(document.public_filename, :encoding => 'BINARY')
于 2012-03-14T00:23:20.563 に答える