# File lib/mail/encodings.rb, line 186 def Encodings.encode_non_usascii(address, charset) return address if address.ascii_only? or charset.nil? us_ascii = %Q{\x00-\x7f} # Encode any non usascii strings embedded inside of quotes address = address.gsub(/(".*?[^#{us_ascii}].*?")/) { |s| Encodings.b_value_encode(unquote(s), charset) } # Then loop through all remaining items and encode as needed tokens = address.split(/\s/) map_with_index(tokens) do |word, i| if word.ascii_only? word else previous_non_ascii = tokens[i-1] && !tokens[i-1].ascii_only? if previous_non_ascii word = " #{word}" end Encodings.b_value_encode(word, charset) end end.join(' ') end