我在解码通过ruby Net::IMAP
获取的消息时遇到问题,这是我在控制台中尝试的内容
imap = Net::IMAP.new(‘imap.gmail.com’,993,true)
imap.login(“my@gmail.com”, “mypassword”)
imap.select(‘INBOX’)
msgs = []
imap.uid_search(["NOT", "DELETED"]).each do |uid|
msgs << imap.uid_fetch(uid, ['RFC822']).first.attr['RFC822'].to_s
end
现在我正在做msgs.first
我正在接受这个
"Return-Path: <my@gmail.com>\r\n
Received: from 192.168.10.191:3000 ([111.93.167.67])\r\n
by mx.google.com with ESMTPSA id kz4sm35619700pbc.39.1969.12.31.16.00.00\r\n
(version=TLSv1.1 cipher=ECDHE-RSA-RC4-SHA bits=128/128);\r\n
Thu, 05 Sep 2013 06:18:24 -0700 (PDT)\r\n
Date: Thu, 05 Sep 2013 18:48:18 +0530\r\n
From: my@gmail.com\r\n
Reply-To: please-change-me-at-config-initializers-devise@example.com\r\n
To: admin@example.com\r\n
Message-ID: <5228849ab79c5_4b57133029c665c4@rajde1.mail>\r\n
Subject: Confirmation instructions\r\n
Mime-Version: 1.0\r\n
Content-Type: text/html;\r\n
charset=UTF-8\r\n
Content-Transfer-Encoding: 7bit\r\n\r\n
<p>Welcome admin@example.com!</p>\r\n\r\n<p>You can confirm your account email through the link below:</p>\r\n\r\n<p><a href=\"http://192.168.10.191:3000/users/confirmation?confirmation_token=jqFrp48CyqnFDwBKpxBV\">Confirm my account</a></p>\r\n"
如何解码,请帮忙。我是这个功能的新手。
答案 0 :(得分:3)
尝试使用以下内容:
body1 = imap.fetch(uid, "RFC822")[0].attr["RFC822"]
mail = Mail.new(body1)
subject = mail.subject
to = mail.to
像这样你可以获得所有的价值。
答案 1 :(得分:3)
当您检索RFC822
时,您会得到整件事。如果您检索BODY.PEEK[HEADER.FIELDS (Subject)]
,您只会获得该主题。 (还有一个ENVELOPE
,它可以非常方便,它包含主题,From和一些,为你整齐地解析。)获取身体(我认为这就是你的意思)内容)有点棘手,您需要首先检索车身结构,然后检索您想要的部件,通常是BODY.PEEK[1]
或BODY.PEEK[1.2]
或其他部分。