红宝石rmail
有方法解析本地磁盘上的邮箱文件。不幸的是这个 gem 已经损坏了(在 Ruby 2.0.0 中)。它可能无法修复,因为人们正在迁移到 gemmail
.
Gem mail
有方法Mail.read('filename.txt')
,但这仅解析邮箱中的第一条消息。
那颗宝石和内置的Net::IMAP
,在网络上充斥着有关通过 imap 访问邮箱的教程。
那么,还有没有办法解析普通的旧file,没有 imap?
作为我团队中唯一的红宝石爱好者,我宁愿不诉诸于让自己难堪http://docs.python.org/2/library/mailbox.html.
或者,更糟糕的是,PHPimap_open('/var/mail/www-data', ...)
- 要是Net::IMAP.new
接受这样的文件名。
好消息是Mbox 格式确实非常简单,尽管正是因为简单,它最终被替换了。解析大型邮箱文件以提取单个消息并不是特别有效。
如果您可以将邮箱文件拆分为单独的字符串,则可以将这些字符串传递给邮件库进行解析。
一个示例起点:
def parse_message(message)
Mail.new(message)
do_other_stuff!
end
message = nil
while (line = STDIN.gets)
if (line.match(/\AFrom /))
parse_message(message) if (message)
message = ''
else
message << line.sub(/^\>From/, 'From')
end
end
关键是每条消息都以"From "
它后面的空格是关键。标头将定义为From:
以及任何以以下开头的行">From"
被视为
实际上是"From"
。正是这样的事情使得这种编码方法确实不够充分,但如果 Maildir 不是一个选项,这就是你必须做的。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)