Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/env tclsh
- lappend auto_path "./tcllib/modules"
- package require mime
- proc readmail { fn } {
- set fp [open $fn r]
- fconfigure $fp -translation binary -encoding binary
- set data [read $fp]
- close $fp
- set data [string map [list "\r\n" "\n"] $data]
- return [mime::initialize -string $data]
- }
- unset -nocomplain stat counter
- array set stat {}
- set fns [lsort -dict [glob -directory "mail/Отправленные" *]]
- foreach fn $fns {
- puts -nonewline "\x0D[incr counter]/[llength $fns] ..."; flush stdout
- set token [readmail $fn]
- set fn [file tail $fn]
- set date [mime::parsedatetime [lindex [mime::getheader $token "Date"] 0] clock]
- set delto [mime::getheader $token "Delivered-To"]
- set recv [lindex [mime::getheader $token "Received"] end]
- set recv [split $recv ";"]
- set recv [lindex $recv 0]
- if { [lsearch [mime::getheader $token -names] "Subject"] == -1 } {
- set subj "<empty>"
- } else {
- set subj [lindex [mime::getheader $token "Subject"] 0]
- if { ![catch { mime::word_decode $subj } data] } {
- lassign $data enc method data
- set subj [encoding convertfrom $enc $data]
- }
- }
- set recv_first [lindex [mime::getheader $token "Received"] end]
- set recv_first [lindex [split $recv_first \n] end]
- set recv_first [mime::parsedatetime [string trim [lindex [split $recv_first ";"] end]] clock]
- set recv_end [lindex [mime::getheader $token "Received"] 0]
- set recv_end [lindex [split $recv_end \n] end]
- set recv_end [mime::parsedatetime [string trim [lindex [split $recv_end ";"] end]] clock]
- set recv_diff [expr { $recv_end - $recv_first }]
- set stat([list $date $fn]) [list \
- $fn \
- $date \
- $delto \
- $recv \
- $subj \
- $recv_diff \
- ]
- mime:::finalize $token -subordinates "all"
- }
- puts ""
- foreach id [lsort -int -index 0 [array names stat]] {
- lassign $stat($id) fn date delto recv subj recv_diff
- puts stderr [join [list $fn [clock format $date -format "%Y-%m-%d %H:%M:%S"] $delto $recv $recv_diff $subj] \t]
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement