アプリケーションのユーザーはプレーンテキストファイルをアップロードできます。これらのファイルは、添付ファイルとして送信メールActionMailer
に追加されます。最近、このメールを送信しようとしたところ、invalid byte sequence in UTF-8
というエラーが発生しました。電子メールは送信されませんでした。このシンボルは、問題の添付ファイル全体に現れます。電子メールの添付ファイルに (非UTF-8文字)を無視するか、添付ファイルからそれらを削除しますか?
それは言わずに行くべきものの、我々はそうActionMailer
を使用している、ここでメーラークラスのメソッド内の添付ファイルのアクションのための代表的なコードです:私たちは気にしないビジネスの観点から
attachments['file-name.jpg'] = File.read('file-name.jpg')
は、これらのテキストファイルの内容理想的には、私たちのアプリケーションがコンテンツを無視し、単にそれらを電子メールに添付したいと思っています。
何とかRails
/ActionMailer
に書式設定を無視することはできますか?または、UTF-8以外の文字を取り除いて、受信テキストファイルを解析する必要がありますか?
私はここでスタックオーバーフローについて質問しましたが、私が現在直面している問題は何も解決しませんでした。
編集:レールコンソールのファイルに#readlines
を呼び出して、黒い菱形が\xA0
という表現であることがわかりました。これはおそらくLatin1(ISO 8859-1)の中で改行されていないスペースです。
テキスト添付ファイルを読む場所(HDDやデータベースなどから)をコードに記述してください。 'str'がある時点で添付ファイルを含む文字列ならば、' str.encoding'が何であるか教えてください。文字列をメールに添付するコード行を表示します。 – AnoE
これはActionMailerの電子メールにファイルを添付するための典型的なコードです: 'mail.attachments [file.file_name.to_s] = File.read(path_to_file)'。 – Tass