racket/collects/sirmail/recover.rkt
2010-04-27 16:50:15 -06:00

30 lines
814 B
Racket

#lang scheme
(require mzlib/list net/head)
(define msgs
(sort (filter (lambda (x) (regexp-match #rx"^[0-9]*$" (path->string x))) (directory-list))
(lambda (a b) (< (string->number (path->string a))
(string->number (path->string b))))))
(define mailbox
(let loop ([msgs msgs][p 1])
(if (null? msgs)
null
(let ([msg (car msgs)]
[rest (loop (cdr msgs) (add1 p))])
(let ([header (with-input-from-file msg
(lambda () (read-string (file-size msg))))])
(cons (list
(string->number (path->string msg))
p
(file-exists? (format "~abody" msg))
(extract-field "From" header)
(extract-field "Subject" header)
null
#f)
rest))))))
(with-output-to-file "mailbox" (lambda () (write mailbox) (newline))
#:exists 'truncate)