gpt4 book ai didi

ruby - 如何使用 ruby​​ 的 net/imap 库读取电子邮件的正文?

转载 作者:数据小太阳 更新时间:2023-10-29 06:37:08 25 4
gpt4 key购买 nike

可能是我今天脑子坏了,突然想不出怎么用ruby的net/imap库来阅读邮件了。我已经花了好几个小时了。我在谷歌中输入了“ruby imap read body”的几种变体,并浏览了许多网站。它们都有关于如何提取附件、同步电子邮件服务器、使用 gmail 等的示例……有些(如 chilkat)实际上是为您执行此操作的共享软件库。我查看了 net/imap 文档,虽然有几个示例可以完成除阅读正文之外的所有操作。

我以前使用过 net/imap,但我只需要将收件箱中的附件下载到目录中。我在#ruby 和#rubyonrails 中询问都无济于事——没人能弄明白。


imap=Net::IMAP.new('mail.xks.com') #of course these are not real
imap.login('web1_xk3','pxx2006')
imap.select('INBOX')
imap.search(["SENTSINCE",(Time.now-1.day).strftime("%d-%b-%Y")]).each do |msgid|
body = imap.fetch(msgid,"BODY")[0].attr["BODY"]
##insert code for getting the text from the body here
##body.class is BodyTypeText
end

附言虽然我确实在代码中提到了主动支持,但这是 sans-rails,所以这意味着没有 action-mailer

最佳答案

借用@Bjer 的回答,这里有一个使用 mail 的完整解决方案 gem 和 gmail_xoauth gem 使用 OAuth2 登录 gmail 并解析所有电子邮件:

imap = Net::IMAP.new('imap.gmail.com', 993, usessl = true, certs = nil, verify = false)
imap.authenticate('XOAUTH2', 'example@gmail.com', 'access_token_goes_here')
imap.select('INBOX')
imap.search(['ALL']).each do |message_id|

msg = imap.fetch(message_id,'RFC822')[0].attr['RFC822']
mail = Mail.read_from_string msg

puts mail.subject
puts mail.text_part.body.to_s
puts mail.html_part.body.to_s

end

关于ruby - 如何使用 ruby​​ 的 net/imap 库读取电子邮件的正文?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1101101/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com