lib/sup/message.rb in sup-0.6 vs lib/sup/message.rb in sup-0.7
- old
+ new
@@ -62,11 +62,11 @@
parse_header(opts[:header] || @source.load_header(@source_info))
end
def parse_header header
- header.each { |k, v| header[k.downcase] = v }
+ header.keys.each { |k| header[k.downcase] = header[k] } # canonicalize
fakeid = nil
fakename = nil
@id =
@@ -390,11 +390,12 @@
chunks
elsif m.header.content_type == "message/rfc822"
payload = RMail::Parser.read(m.body)
from = payload.header.from.first
from_person = from ? PersonManager.person_for(from.format) : nil
- [Chunk::EnclosedMessage.new(from_person, payload.to_s)]
+ [Chunk::EnclosedMessage.new(from_person, payload.to_s)] +
+ message_to_chunks(payload, encrypted)
else
filename =
## first, paw through the headers looking for a filename
if m.header["Content-Disposition"] && m.header["Content-Disposition"] =~ /filename="?(.*?[^\\])("|;|$)/
$1
@@ -431,14 +432,13 @@
end
end
end
def self.convert_from body, charset
- charset = "utf-8" if charset =~ /UTF_?8/i
begin
raise MessageFormatError, "RubyMail decode returned a null body" unless body
return body unless charset
- Iconv.iconv($encoding + "//IGNORE", charset, body + " ").join[0 .. -2]
+ Iconv.easy_decode($encoding, charset, body)
rescue Errno::EINVAL, Iconv::InvalidEncoding, Iconv::IllegalSequence, MessageFormatError => e
Redwood::log "warning: error (#{e.class.name}) decoding message body from #{charset}: #{e.message}"
File.open(File.join(BASE_DIR,"unable-to-decode.txt"), "w") { |f| f.write body }
body
end