3

Ruby gemrmailには、ローカル ディスク上のメールボックス ファイルを解析するメソッドがあります。残念ながら、この gem は壊れています (Ruby 2.0.0)。人々は gem に移行しているため、修正されない可能性がありますmail

Gemmailには methodMail.read('filename.txt')がありますが、これはメールボックス内の最初のメッセージのみを解析します。

その gem と builtinNet::IMAPは、imap を介してメールボックスにアクセスするためのチュートリアルでネットをあふれさせました。

それで、 imapなしでプレーンな古いファイルを解析する方法はまだありますか? 私のグループで唯一の ruby​​ist として、http://docs.python.org/2/library/mailbox.htmlに頼って恥をかかないようにしたいと思います。

または、さらに悪いことに、PHP のimap_open('/var/mail/www-data', ...)- そのようなファイル名しかNet::IMAP.new受け入れられない場合。

4

3 に答える 3

1

メール ボックスを解析する tmail を使用できますが、メールに置き換えられましたが、それを置き換えるクラスは実際には見つかりません 。そのため、tmail と一緒に使いたいと思うかもしれません。

編集: @tadman が指摘したように、Ruby 1.9 では動作しないはずです。ただし、このクラスを移植することはできます (そして、他のすべての人が使用できるように github に配置します:-))

于 2013-05-03T16:21:44.993 に答える
1

mbox 形式は、可能な限りシンプルです。これは、空行で区切られたすべてのメッセージを単純に連結したものです。各メッセージの最初の行は、「From」の 5 文字で始まります。メッセージがファイルに追加されると、「From」で始まる行には>接頭辞が付いているため、行が「From」で始まるという事実を、それがメッセージの開始であることを示す指標として確実に使用できます。

もちろん、これは古い形式で標準化されていないため、さまざまなバリエーションがあります。1 つのバリアントはContent-Lengthヘッダーを使用してメッセージの長さを決定しますが、このバリアントの一部の実装では「>」の挿入に失敗します。しかし、これは実際にはまれだと思います。

mbox 形式の大きな問題は、メール エージェントがファイルをその場で変更する必要があることです。したがって、すべての実装には何らかのロック手順があります。もちろん、そこには標準化されていないので、メールボックスを読んでいる間、メールボックスを変更する他のプロセスに注意する必要があります。実際には、多くのメール システムは代わりに maildir 形式を使用することでこの問題を解決しました。この形式では、メールボックスは実際にはディレクトリであり、すべてのメッセージは単一のファイルです。

他にやりたいことには MIME デコードが含まれますが、それを行うユーティリティを見つけることができるはずです。

于 2013-05-03T16:25:27.373 に答える