Ruby IMAP Bibliothek nicht dekodieren Mail-Betreff
-
09-10-2019 - |
Frage
Ich habe Mail-Nachricht bekam mit folgenden Themen in meiner Google Mail accout:
"400, ????????, ????????"
Hier ist der Code, den ich zu greifen Mail verwenden:
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
In msg.subject Ich habe Wert hätte folgenden "= KOI8-R? B? MTAwLCDixc7ayc4sIDMwMDAgzMnU0s / X? ="
Es scheint, dass IMAP es nicht entschlüsselt haben. Soll ich manuell oder IMAP-Bibliothek kann ich es für mich?
Lösung
Wie wäre es mit NKF?
require 'nkf'
...
result = {... :subject => NKF.nkf("-mw", msg.subject), ...}
-MW Mittel MIME dekodieren und utf-8 Ausgang
Andere Tipps
Mail :: Codierungen sind wirklich hilfreich hier:
require 'mail'
test = "zwei plus =?ISO-8859-15?Q?zw=F6lf_ist_vierzehn?="
puts Mail::Encodings.value_decode(test)
Rückkehr
zwei plus zwölf ist vierzehn
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow