Ruby IMAP库不解码邮件主题

时间:2010-10-20 07:15:20

标签: ruby-on-rails imap quoted-printable

我的Gmail帐号中收到了以下主题的邮件:

“400,значение,значение”

以下是我用来抓邮件的代码:

imap = Net::IMAP.new('imap.gmail.com', 993, true, nil, false)
imap.login(LOGIN, PASSWORD) 
imap.select("INBOX")
messages = imap.search(['ALL']).map do |message_id|
  msg =imap.fetch(message_id, "ENVELOPE")[0].attr["ENVELOPE"]
  result =  {:mailbox => msg.from[0].mailbox, :host => msg.from[0].host, :subject => msg.subject, :created_at => msg.date}
  imap.store(message_id, "+FLAGS", [:Deleted])
  result
end
imap.expunge()
imap.logout

在msg.subject中,我得到以下值“=?KOI8-R?B?MTAwLCDixc7ayc4sIDMwMDAgzMnU0s / X?=”

似乎IMAP尚未对其进行解码。我应该手动操作还是IMAP库可以帮我吗?

2 个答案:

答案 0 :(得分:9)

邮件::编码在这里非常有用:

require 'mail'
test = "zwei plus =?ISO-8859-15?Q?zw=F6lf_ist_vierzehn?="
puts Mail::Encodings.value_decode(test)

返回

zwei plus zwölf ist vierzehn

答案 1 :(得分:2)

如何使用NKF?

require 'nkf'
...
result =  {... :subject => NKF.nkf("-mw", msg.subject), ...}

-mw表示MIME解码和utf-8输出