bsfilterでメールを処理していると、以下のようなエラーが出るときがあります。
/path/bsfilter:1371:in `gsub': invalid byte sequence in EUC-JP (ArgumentError) from /path/bsfilter:1371:in `decode_character_reference' from /path/bsfilter:1590:in `tokenize_body' from /path/bsfilter:1303:in `tokenize_buf' from /path/bsfilter:2799:in `block (2 levels) in do_imap' from /path/bsfilter:2796:in `each' from /path/bsfilter:2796:in `block in do_imap' from /path/bsfilter:2794:in `each' from /path/bsfilter:2794:in `do_imap' from /path/bsfilter:3442:in `run' from /path/bsfilter:3494:in `<main>'
これを回避するには、Ruby2.1.0以降では、decode_character_refrence()関数の冒頭を以下のようにします。
def decode_character_reference(str, lang) if (@options["utf-8"]) newstr2 = str.scrub('?') # この行を追加。下の行のstrをnewstr2に変更 newstr = newstr2.gsub(/\&\#(\d{1,5}|x[\da-f]{1,4});/i) do