Ruby IMAP 库无法解码邮件主题

发布于 2024-09-28 20:16:33 字数 684 浏览 4 评论 0原文

我的 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 库可以为我执行?

I have got mail message with following subject in my Gmail accout:

"400, значение, значение"

Here is the code I use to grab mail:

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 i've got following value "=?KOI8-R?B?MTAwLCDixc7ayc4sIDMwMDAgzMnU0s/X?="

It seems that IMAP haven't decoded it. Should I do I manually or IMAP library could it for me?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

乙白 2024-10-05 20:16:33

Mail::Encodings 在这里真的很有帮助:

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

Mail::Encodings is really helpful here:

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

returns

zwei plus zwölf ist vierzehn
傾旎 2024-10-05 20:16:33

使用NKF怎么样?

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

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

How about using NKF?

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

-mw means MIME decode and utf-8 output

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文