Hi,

Am Dienstag, 28. Aug 2007, 00:48:39 +0900 schrieb Stephan Mueller:
> i need to parse mails. Some of the Mails in question use some ending
> scheme to support sepcial characters which are not ASCII-7.
> 
> encoded chars look like this: =?UTF-8?Q?=20some text...?UTF-?Q?...
> 
> Is there a way to decode these subjects soemhow to real utf? Then I
> could use Iconv to change the encoding as i like.

Half a year ago I wrote me a mail filter that does much more
than only decode header fields. I post some example code for
your task below.

I use the filter every day since last December. I provide it
as open source but I think nobody else is using it. So I
cannot estimate how good the documentation and the
installation tools are.

Bertram


--------------------------------

require "bs-net/mail"
include BsNet

mb = MBox.new "~/Mail/lists/ruby-talk"

# Variant #1

froms = mb.map { |text|
  mail = Mail.new text
  mail.addrs( :from).map { |plain,long,group| long }
}
froms.flatten!
puts froms.uniq.sort


puts "-"*32


# Variant #2

froms = mb.map { |text|
  mail = Mail.new text
  mail.addrs_norm :from   # plain lower case addresses
}
froms.flatten!
puts froms.uniq.sort


puts "-"*32


# Variant #3

froms = []
mb.map { |text|
  mail = Mail.new text
  f = mail.addrs :from
  froms.concat f.to_a
}
froms.uniq.sort.each { |(plain,long,group)|
  puts "#{plain}  --  #{long}  -- #{group}"
}


-- 
Bertram Scharpf
Stuttgart, Deutschland/Germany
http://www.bertram-scharpf.de