gpt4 book ai didi

ruby - 如何在 Ruby 中解析邮箱文件?

转载 作者:数据小太阳 更新时间:2023-10-29 07:45:18 24 4
gpt4 key购买 nike

Ruby gem rmail 具有解析本地磁盘上的邮箱文件的方法。不幸的是这个 gem 已经坏了(在 Ruby 2.0.0 中)。它可能无法修复,因为人们正在迁移到 gem mail

Gem mail 有方法 Mail.read('filename.txt'),但它只解析邮箱中的第一条消息。

那个 gem 和内置的 Net::IMAP 已经在网上充斥着通过 imap 访问邮箱的教程。

那么,还有没有办法在没有 imap 的情况下解析普通的旧文件?作为我小组中唯一的 ruby 爱好者,我不想诉诸 http://docs.python.org/2/library/mailbox.html 让自己难堪。 .

或者,更糟糕的是,PHP 的 imap_open('/var/mail/www-data', ...) —— 如果只有 Net::IMAP.new接受这样的文件名。

最佳答案

好消息是 Mbox format真的很简单,虽然它的简单性是它最终被替换的原因。解析大型邮箱文件以提取单个消息的效率不是特别高。

如果您可以将邮箱文件拆分成单独的字符串,则可以将这些字符串传递给 Mail 库进行解析。

示例起点:

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 " 开头,后面的空格是关键。 header 将被定义为 From: 并且任何以 ">From" 开头的行都将被视为实际上是 "From"。像这样的事情使得这种编码方法确实不合适,但如果 Maildir 不是一个选项,这就是你必须要做的。

关于ruby - 如何在 Ruby 中解析邮箱文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16363222/

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