#!/bin/sh
# the next line restarts using wish \
exec wish  "$0" "$@"

#----------------------------------------------------------------
#Questo file e' stato generato da Nidl c 2000 Amedeo de Longis
#                     luponero@mclink.it
#----------------------------------------------------------------

eval destroy [winfo child .]
bind Text <Control-c> {set w [focus -displayof .]; tk_textCopy $w}
bind Text <Control-x> {set w [focus -displayof .]; tk_textCut $w}
bind Text <Control-v> {set w [focus -displayof .]; tk_textPaste $w}
wm title . "NidlMail"
wm geometry . 620x460+10+10
set fontm -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*
menu .menu -tearoff 0 -font $fontm -borderwidth 1
. configure -menu .menu
set m ".menu"
menu $m.menu -tearoff 0 -font $fontm -borderwidth 1
$m add cascade -label "File" -menu $m.menu -underline 0
menu $m.menu1 -tearoff 0 -font $fontm -borderwidth 1
$m add cascade -label "Account" -menu $m.menu1 -underline 0
$m.menu add command -label "Posta scaricata" -command "AprePacchetto" -underline 0
$m.menu add command -label "Archivio" -command "ApreArchivio" -underline 0
$m.menu add command -label "Esci" -command Uscita -underline 0
$m.menu1 add command -label "Configura" -command Configura -underline 0
frame .corn1
pack .corn1 -in .
pack configure .corn1 -side top
pack configure .corn1 -fill x
pack configure .corn1 -anchor w
.corn1 config -bg gray
.corn1 config -bd 2
.corn1 config -relief groove
button .bott1
pack .bott1 -in .corn1
.bott1 config -command ScriviMsg
pack configure .bott1 -side left
.bott1 config -bg gray75
.bott1 config -bd 0
pack configure .bott1 -pady 1
.bott1 config -relief flat
button .bott2
pack .bott2 -in .corn1
.bott2 config -command Rispondi
pack configure .bott2 -side left
.bott2 config -bg gray75
.bott2 config -bd 0
.bott2 config -relief flat
button .bott3
pack .bott3 -in .corn1
.bott3 config -command RiceviMsg
pack configure .bott3 -side left
.bott3 config -bg gray75
.bott3 config -bd 0
.bott3 config -relief flat
button .bott4
pack .bott4 -in .corn1
.bott4 config -command LeggiPrecedente
pack configure .bott4 -side left
.bott4 config -bg gray75
.bott4 config -bd 0
.bott4 config -relief flat
button .bott5
pack .bott5 -in .corn1
.bott5 config -command LeggiSuccessivo
pack configure .bott5 -side left
.bott5 config -bg gray75
.bott5 config -bd 0
.bott5 config -relief flat
button .bott6
pack .bott6 -in .corn1
.bott6 config -command Archivia
pack configure .bott6 -side left
.bott6 config -bg gray75
.bott6 config -bd 0
.bott6 config -relief flat
button .bott10
pack .bott10 -in .corn1
.bott10 config -command Uscita
pack configure .bott10 -side right
.bott10 config -bg gray75
.bott10 config -bd 0
.bott10 config -relief flat
frame .corn2
pack .corn2 -in .
pack configure .corn2 -side left
pack configure .corn2 -fill y
pack configure .corn2 -anchor n
listbox .list
pack .list -in .corn2
pack configure .list -side top
pack configure .list -fill both
pack configure .list -expand yes
pack configure .list -anchor w
.list config -bg white
.list config -selectbackground navyblue
.list config -selectforeground white
.list config -xscrollcommand ".barr set"
.list config -yscrollcommand ".barr2 set"
.list config -selectmode single
bind .list <ButtonRelease-1> "LeggiMessaggio"
scrollbar .barr
pack .barr -in .corn2
pack configure .barr -side bottom
pack configure .barr -fill x
pack configure .barr -anchor w
.barr config -orient horizontal
.barr config -width 8
.barr config -command ".list xview"
scrollbar .barr1
pack .barr1 -in .
pack configure .barr1 -side right
pack configure .barr1 -fill y
pack configure .barr1 -anchor n
.barr1 config -width 10
.barr1 config -command ".edit yview"
scrollbar .barr2
pack .barr2 -in .
pack configure .barr2 -side left
pack configure .barr2 -fill y
pack configure .barr2 -anchor n
.barr2 config -width 8
.barr2 config -command ".list yview"
frame .corn3
pack .corn3 -in .
pack configure .corn3 -side top
pack configure .corn3 -fill x
pack configure .corn3 -anchor n
.corn3 config -bg white
.corn3 config -bd 2
.corn3 config -relief sunken
.corn3 config -height 50
.corn3 config -width 150
frame .corn4
pack .corn4 -in .corn3
pack configure .corn4 -side left
pack configure .corn4 -fill both
pack configure .corn4 -anchor n
.corn4 config -bg grey25
.corn4 config -height 150
.corn4 config -width 150
label .etic1
pack .etic1 -in .corn4
pack configure .etic1 -side top
pack configure .etic1 -anchor e
.etic1 config -bg grey25
.etic1 config -fg white
.etic1 config -text "Msg:"
label .etic2
pack .etic2 -in .corn4
pack configure .etic2 -side top
pack configure .etic2 -anchor e
.etic2 config -bg grey25
.etic2 config -fg white
.etic2 config -text "Autore:"
label .etic3
pack .etic3 -in .corn4
pack configure .etic3 -side top
pack configure .etic3 -anchor e
.etic3 config -bg grey25
.etic3 config -fg white
.etic3 config -text "Oggetto:"
label .etic4
pack .etic4 -in .corn3
pack configure .etic4 -side top
pack configure .etic4 -anchor w
.etic4 config -bg white
.etic4 config -textvariable Lmsg
label .etic5
pack .etic5 -in .corn3
pack configure .etic5 -side top
pack configure .etic5 -anchor w
.etic5 config -bg white
pack configure .etic5 -padx 4
.etic5 config -textvariable Lautore
label .etic6
pack .etic6 -in .corn3
pack configure .etic6 -side top
pack configure .etic6 -anchor w
.etic6 config -bg white
pack configure .etic6 -padx 4
.etic6 config -textvariable Loggetto
text .edit
pack .edit -in .
pack configure .edit -side top
pack configure .edit -fill both
pack configure .edit -expand yes
pack configure .edit -anchor w
.edit config -bg white
.edit config -font "-*-Helvetica-medium-r-normal-*-14-*-*-*-*-*-*-*"
.edit config -selectbackground black
.edit config -selectforeground white
.edit config -yscrollcommand ".barr1 set"
.edit config -wrap word
proc Mostra_.fine1 {} {
catch {destroy .fine1}
toplevel .fine1
wm title .fine1 "Configura Account"
wm geometry .fine1 260x230+150+50
set fontm -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*
menu .fine1.menu -tearoff 0 -font $fontm -borderwidth 1
.fine1 configure -menu .fine1.menu
set m .fine1.menu
frame .fine1.corn
pack .fine1.corn -in .fine1
pack configure .fine1.corn -side top
pack configure .fine1.corn -anchor w
pack configure .fine1.corn -padx 10
pack configure .fine1.corn -pady 5
label .fine1.etic
pack .fine1.etic -in .fine1.corn
pack configure .fine1.etic -side left
pack configure .fine1.etic -anchor n
.fine1.etic config -text "Server Pop3: "
entry .fine1.case
pack .fine1.case -in .fine1.corn
pack configure .fine1.case -side left
pack configure .fine1.case -anchor n
.fine1.case config -textvariable Pop3
frame .fine1.corn1
pack .fine1.corn1 -in .fine1
pack configure .fine1.corn1 -side top
pack configure .fine1.corn1 -anchor w
pack configure .fine1.corn1 -padx 10
pack configure .fine1.corn1 -pady 5
label .fine1.etic1
pack .fine1.etic1 -in .fine1.corn1
pack configure .fine1.etic1 -side left
pack configure .fine1.etic1 -anchor n
.fine1.etic1 config -text "Server Smtp:"
entry .fine1.case1
pack .fine1.case1 -in .fine1.corn1
pack configure .fine1.case1 -side left
pack configure .fine1.case1 -anchor n
.fine1.case1 config -textvariable Smtp
frame .fine1.corn2
pack .fine1.corn2 -in .fine1
pack configure .fine1.corn2 -side top
pack configure .fine1.corn2 -anchor w
pack configure .fine1.corn2 -padx 10
pack configure .fine1.corn2 -pady 5
label .fine1.etic2
pack .fine1.etic2 -in .fine1.corn2
pack configure .fine1.etic2 -side left
pack configure .fine1.etic2 -anchor n
.fine1.etic2 config -text "User:            "
entry .fine1.case2
pack .fine1.case2 -in .fine1.corn2
pack configure .fine1.case2 -side left
pack configure .fine1.case2 -anchor n
.fine1.case2 config -textvariable User
frame .fine1.corn5
pack .fine1.corn5 -in .fine1
pack configure .fine1.corn5 -side top
pack configure .fine1.corn5 -anchor w
pack configure .fine1.corn5 -padx 10
pack configure .fine1.corn5 -pady 5
label .fine1.etic5
pack .fine1.etic5 -in .fine1.corn5
pack configure .fine1.etic5 -side left
pack configure .fine1.etic5 -anchor n
.fine1.etic5 config -text "Password:    "
entry .fine1.case5
pack .fine1.case5 -in .fine1.corn5
pack configure .fine1.case5 -side left
pack configure .fine1.case5 -anchor n
.fine1.case5 config -textvariable Password
.fine1.case5 config -show "*"
frame .fine1.corn3
pack .fine1.corn3 -in .fine1
pack configure .fine1.corn3 -side top
pack configure .fine1.corn3 -anchor w
pack configure .fine1.corn3 -padx 10
pack configure .fine1.corn3 -pady 5
label .fine1.etic3
pack .fine1.etic3 -in .fine1.corn3
pack configure .fine1.etic3 -side left
pack configure .fine1.etic3 -anchor n
.fine1.etic3 config -text "Mail Address:"
entry .fine1.case3
pack .fine1.case3 -in .fine1.corn3
pack configure .fine1.case3 -side left
pack configure .fine1.case3 -anchor n
.fine1.case3 config -textvariable Mioindirizzo
frame .fine1.corn7
pack .fine1.corn7 -in .fine1
pack configure .fine1.corn7 -side top
pack configure .fine1.corn7 -anchor w
pack configure .fine1.corn7 -padx 10
pack configure .fine1.corn7 -pady 1
checkbutton .fine1.casel
pack .fine1.casel -in .fine1.corn7
pack configure .fine1.casel -side left
pack configure .fine1.casel -anchor n
.fine1.casel config -text "Elimina posta dopo averla scaricata"
.fine1.casel config -onvalue "1"
.fine1.casel config -variable EliminaPosta
frame .fine1.corn4
pack .fine1.corn4 -in .fine1
pack configure .fine1.corn4 -side bottom
pack configure .fine1.corn4 -fill x
pack configure .fine1.corn4 -anchor w
.fine1.corn4 config -bd 2
pack configure .fine1.corn4 -pady 5
.fine1.corn4 config -relief groove
button .fine1.bott
pack .fine1.bott -in .fine1.corn4
.fine1.bott config -command SalvaConfig
pack configure .fine1.bott -side right
pack configure .fine1.bott -anchor e
.fine1.bott config -text "Applica"
button .fine1.bott1
pack .fine1.bott1 -in .fine1.corn4
.fine1.bott1 config -command DistruggiConfig
pack configure .fine1.bott1 -side right
pack configure .fine1.bott1 -anchor e
.fine1.bott1 config -text "Annulla"

}

proc Mostra_.fine2 {} {
catch {destroy .fine2}
toplevel .fine2
wm title .fine2 "Scrivi Messaggio"
wm geometry .fine2 550x400+70+70
set fontm -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*
menu .fine2.menu -tearoff 0 -font $fontm -borderwidth 1
.fine2 configure -menu .fine2.menu
set m .fine2.menu
frame .fine2.corn1
pack .fine2.corn1 -in .fine2
pack configure .fine2.corn1 -side top
pack configure .fine2.corn1 -fill x
pack configure .fine2.corn1 -anchor w
.fine2.corn1 config -bg gray75
.fine2.corn1 config -bd 2
.fine2.corn1 config -relief groove
button .fine2.bott1
pack .fine2.bott1 -in .fine2.corn1
.fine2.bott1 config -command InviaMsg
pack configure .fine2.bott1 -side left
.fine2.bott1 config -bg gray75
.fine2.bott1 config -bd 0
pack configure .fine2.bott1 -padx 1
pack configure .fine2.bott1 -pady 1
.fine2.bott1 config -relief flat
button .fine2.bott3
pack .fine2.bott3 -in .fine2.corn1
.fine2.bott3 config -command SalvaBozza
pack configure .fine2.bott3 -side left
.fine2.bott3 config -bg gray75
.fine2.bott3 config -bd 0
pack configure .fine2.bott3 -padx 1
pack configure .fine2.bott3 -pady 1
.fine2.bott3 config -relief flat
button .fine2.bott4
pack .fine2.bott4 -in .fine2.corn1
.fine2.bott4 config -command ImportaFile
pack configure .fine2.bott4 -side left
.fine2.bott4 config -bg gray75
.fine2.bott4 config -bd 0
pack configure .fine2.bott4 -padx 1
pack configure .fine2.bott4 -pady 1
.fine2.bott4 config -relief flat
button .fine2.bott2
pack .fine2.bott2 -in .fine2.corn1
.fine2.bott2 config -command DistruggiScrivi
pack configure .fine2.bott2 -side right
.fine2.bott2 config -bg gray75
.fine2.bott2 config -bd 0
pack configure .fine2.bott2 -padx 1
.fine2.bott2 config -relief flat
frame .fine2.corn3
pack .fine2.corn3 -in .fine2
pack configure .fine2.corn3 -side top
pack configure .fine2.corn3 -fill x
pack configure .fine2.corn3 -anchor n
.fine2.corn3 config -bg white
.fine2.corn3 config -bd 2
.fine2.corn3 config -relief sunken
.fine2.corn3 config -height 50
.fine2.corn3 config -width 150
frame .fine2.corn4
pack .fine2.corn4 -in .fine2.corn3
pack configure .fine2.corn4 -side left
pack configure .fine2.corn4 -fill both
pack configure .fine2.corn4 -anchor n
.fine2.corn4 config -bg grey25
.fine2.corn4 config -height 150
.fine2.corn4 config -width 150
label .fine2.etic1
pack .fine2.etic1 -in .fine2.corn4
pack configure .fine2.etic1 -side top
pack configure .fine2.etic1 -anchor e
.fine2.etic1 config -bg grey25
.fine2.etic1 config -fg white
pack configure .fine2.etic1 -pady 5
.fine2.etic1 config -text "Destinatario:"
label .fine2.etic2
pack .fine2.etic2 -in .fine2.corn4
pack configure .fine2.etic2 -side top
pack configure .fine2.etic2 -anchor e
.fine2.etic2 config -bg grey25
.fine2.etic2 config -fg white
pack configure .fine2.etic2 -pady 5
.fine2.etic2 config -text "Oggetto:"
entry .fine2.case1
pack .fine2.case1 -in .fine2.corn3
pack configure .fine2.case1 -side top
pack configure .fine2.case1 -fill x
pack configure .fine2.case1 -expand yes
pack configure .fine2.case1 -anchor w
.fine2.case1 config -bg white
.fine2.case1 config -bd 0
pack configure .fine2.case1 -padx 3
pack configure .fine2.case1 -pady 5
.fine2.case1 config -relief flat
.fine2.case1 config -textvariable Destinatario
entry .fine2.case2
pack .fine2.case2 -in .fine2.corn3
pack configure .fine2.case2 -side top
pack configure .fine2.case2 -fill x
pack configure .fine2.case2 -expand yes
pack configure .fine2.case2 -anchor w
.fine2.case2 config -bg white
.fine2.case2 config -bd 0
pack configure .fine2.case2 -padx 3
pack configure .fine2.case2 -pady 5
.fine2.case2 config -relief flat
.fine2.case2 config -textvariable Oggetto
scrollbar .fine2.barr1
pack .fine2.barr1 -in .fine2
pack configure .fine2.barr1 -side right
pack configure .fine2.barr1 -fill y
pack configure .fine2.barr1 -anchor n
.fine2.barr1 config -width 10
.fine2.barr1 config -command ".fine2.edit yview"
text .fine2.edit
pack .fine2.edit -in .fine2
pack configure .fine2.edit -side top
pack configure .fine2.edit -fill both
pack configure .fine2.edit -expand yes
pack configure .fine2.edit -anchor w
.fine2.edit config -bg white
.fine2.edit config -font "-*-Helvetica-medium-r-normal-*-14-*-*-*-*-*-*-*"
.fine2.edit config -selectbackground black
.fine2.edit config -selectforeground white
.fine2.edit config -yscrollcommand ".fine2.barr1 set"
.fine2.edit config -wrap word

}

proc Mostra_.fine3 {} {
catch {destroy .fine3}
toplevel .fine3
wm title .fine3 "Ricezione/Spedizione Msg."
wm geometry .fine3 200x110+150+150
set fontm -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*
menu .fine3.menu -tearoff 0 -font $fontm -borderwidth 1
.fine3 configure -menu .fine3.menu
set m .fine3.menu
frame .fine3.corn
pack .fine3.corn -in .fine3
pack configure .fine3.corn -side left
pack configure .fine3.corn -fill both
pack configure .fine3.corn -expand yes
pack configure .fine3.corn -anchor n
.fine3.corn config -bg grey25
.fine3.corn config -bd 3
.fine3.corn config -relief sunken
label .fine3.etic1
pack .fine3.etic1 -in .fine3.corn
pack configure .fine3.etic1 -side top
.fine3.etic1 config -bg grey25
.fine3.etic1 config -fg green
pack configure .fine3.etic1 -padx 5
pack configure .fine3.etic1 -pady 5
.fine3.etic1 config -text "Collegamento in corso..."
label .fine3.etic2
pack .fine3.etic2 -in .fine3.corn
pack configure .fine3.etic2 -side top
.fine3.etic2 config -bg grey25
.fine3.etic2 config -fg green
pack configure .fine3.etic2 -padx 5
pack configure .fine3.etic2 -pady 5
.fine3.etic2 config -text ""
label .fine3.etic3
pack .fine3.etic3 -in .fine3.corn
pack configure .fine3.etic3 -side top
.fine3.etic3 config -bg grey25
.fine3.etic3 config -fg green
pack configure .fine3.etic3 -padx 5
pack configure .fine3.etic3 -pady 5
.fine3.etic3 config -text ""

}

proc ProceduraPrincipale  {} {
global FileDaAprire
global Pop3
global Smtp
global User
global Password
global Mioindirizzo
global Destinatario
global Oggetto
global Lautore
global Loggetto
global Lmsg
global MsgSelezionato
global EliminaPosta
set FileDaAprire ""
set Pop3 ""
set Smtp ""
set User ""
set Password ""
set Mioindirizzo ""
set Destinatario ""
set Oggetto ""
set MsgSelezionato ""
set stringa1 "imscrivi"
set stringa2 "./bitmaps/scrivi.gif"
image create photo $stringa1 -file $stringa2
set stringa1 "imrisp"
set stringa2 "./bitmaps/risp.gif"
image create photo $stringa1 -file $stringa2
set stringa1 "imric"
set stringa2 "./bitmaps/ricevi.gif"
image create photo $stringa1 -file $stringa2
set stringa1 "imprec"
set stringa2 "./bitmaps/prevm.gif"
image create photo $stringa1 -file $stringa2
set stringa1 "imsucc"
set stringa2 "./bitmaps/nextm.gif"
image create photo $stringa1 -file $stringa2
set stringa1 "imarch"
set stringa2 "./bitmaps/archivia.gif"
image create photo $stringa1 -file $stringa2
set stringa1 "imesci"
set stringa2 "./bitmaps/esci2.gif"
image create photo $stringa1 -file $stringa2
set nomeoggetto ".bott1"
set stringa1 "imscrivi"
$nomeoggetto config -image $stringa1
set nomeoggetto ".bott2"
set stringa1 "imrisp"
$nomeoggetto config -image $stringa1
set nomeoggetto ".bott3"
set stringa1 "imric"
$nomeoggetto config -image $stringa1
set nomeoggetto ".bott4"
set stringa1 "imprec"
$nomeoggetto config -image $stringa1
set nomeoggetto ".bott5"
set stringa1 "imsucc"
$nomeoggetto config -image $stringa1
set nomeoggetto ".bott6"
set stringa1 "imarch"
$nomeoggetto config -image $stringa1
set nomeoggetto ".bott10"
set stringa1 "imesci"
$nomeoggetto config -image $stringa1
set Lmsg "Fri, 28 Jan 2000 15:20:45 +0100"
set Lautore "luponero@mclink.it"
set Loggetto "Benvenuti in Nidmail"
set nomeoggetto ".edit"
set stringa1 "\nQuesto piccolo MailReader  stato scritto con Nidl.\nE' solo un esempio di ci che si pu fare con questo facile\nsotto-linguaggio.\n\nNidlMail  molto semplice e serve pi che altro ad illustrare il\nfunzionamento del socket ed i comandi relativi.\nIn pratica pu costituire la base per le vostre applicazioni\npersonalizzate.\n\nSpero che proviate NidlMail e che dopo aver configurato l'account\ne premuto il tasto \"rispondi\" mi inviate una mail di prova.\nSaluti\n\nLuponero "
set valore1 "end"
$nomeoggetto insert $valore1 $stringa1
update
AprePacchetto
update
LeggiConfig
}
proc AprePacchetto {} {
global FileDaAprire
set stringa1 "#tmpm.in"
set risultato [ file isfile $stringa1]
if {$risultato == "1"} {
set FileDaAprire "#tmpm.in"
LeggeFile
 }
}
proc LeggeFile {} {
global FileDaAprire
global Lmsg
global Lautore
global Loggetto
set Lmsg ""
set Lautore ""
set Loggetto ""
set nomeoggetto ".edit"
set valore1 "0.0"
set valore2 "end"
$nomeoggetto delete $valore1 $valore2
set nomeoggetto ".list"
set valore1 "0"
set valore2 "end"
$nomeoggetto delete $valore1 $valore2
set miofile  [open $FileDaAprire "r"]
set seekfile "0"
set separatore1 " "
set separatore2 "                              "
set autore ""
set oggetto ""
while {![eof $miofile]} {
set stringa1 $miofile
gets $stringa1 risultato
set linea $risultato
set stringa1 $linea
set stringa2 ".*"
set risultato [string match $stringa2 $stringa1]
if {$risultato == "1"} {
set stringa1 $miofile
set risultato [ tell $stringa1]
set seekfile $risultato
 }
set stringa1 $linea
set stringa2 "From:*"
set risultato [string match $stringa2 $stringa1]
if {$risultato == "1"} {
set nomeoggetto ".list"
set stringa1 $linea
set valore1 "6"
set valore2 "end"
set risultato [string range $stringa1 $valore1 $valore2]
set autore $risultato
 }
set stringa1 $linea
set stringa2 "Subject:*"
set risultato [string match $stringa2 $stringa1]
if {$risultato == "1"} {
set stringa1 $linea
set valore1 "9"
set valore2 "end"
set risultato [string range $stringa1 $valore1 $valore2]
set oggetto $risultato
set stringa1 $oggetto
set stringa2 $separatore1
set risultato $stringa1$stringa2
set stringa1 $risultato
set stringa2 $autore
set risultato $stringa1$stringa2
set stringa1 $risultato
set stringa2 $separatore2
set risultato $stringa1$stringa2
set stringa1 $risultato
set stringa2 $seekfile
set risultato $stringa1$stringa2
set nomeoggetto ".list"
set stringa1 $risultato
set valore1 "end"
$nomeoggetto insert $valore1 $stringa1
 }
 }
close $miofile
set nomeoggetto ".list"
set valore1 "0"
set valore2 "0"
$nomeoggetto selection set $valore1 $valore2
LeggiMessaggio
}
proc ApreArchivio {} {
global FileDaAprire
set file "/.nmailarchivi"
set Amedeo 1;global env; set risultato $env(HOME)
set stringa1 $risultato
set stringa2 $file
set risultato $stringa1$stringa2
set file $risultato
set stringa1 $file
set risultato [ file isfile $stringa1]
if {$risultato == "1"} {
set FileDaAprire $file
LeggeFile
 }
if {$risultato == "0"} {
set stringa1 "L'archivio  vuoto"
tk_messageBox -message $stringa1
 }
}
proc LeggiSuccessivo  {} {
global MsgSelezionato
set nomeoggetto ".list"
set risultato [$nomeoggetto curselection]
if {$risultato == ""} {
set risultato $MsgSelezionato
 }
if {$risultato == ""} {
set risultato "-1"
 }
set selezione $risultato
incr selezione
set nomeoggetto ".list"
set risultato [$nomeoggetto size]
if {$selezione == $risultato} {
return
 }
set nomeoggetto ".list"
$nomeoggetto selection clear 0 end
set valore1 $selezione
set valore2 $selezione
$nomeoggetto selection set $valore1 $valore2
LeggiMessaggio
}
proc LeggiPrecedente  {} {
global MsgSelezionato
set nomeoggetto ".list"
set risultato [$nomeoggetto curselection]
if {$risultato == ""} {
set risultato $MsgSelezionato
 }
if {$risultato == ""} {
set risultato "1"
 }
set valore1 $risultato
set valore2 "1"
set risultato [expr $valore1 - $valore2]
set selezione $risultato
if {$selezione < "0"} {
return
 }
set nomeoggetto ".list"
$nomeoggetto selection clear 0 end
set valore1 $selezione
set valore2 $selezione
$nomeoggetto selection set $valore1 $valore2
LeggiMessaggio
}
proc LeggiMessaggio  {} {
global FileDaAprire
global Lmsg
global Lautore
global Loggetto
global MsgSelezionato
if {$FileDaAprire == ""} {
return
 }
set Lmsg ""
set Lautore ""
set Loggetto ""
set nomeoggetto ".edit"
set valore1 "0.0"
set valore2 "end"
$nomeoggetto delete $valore1 $valore2
set nomeoggetto ".list"
set risultato [$nomeoggetto size]
if {$risultato == "0"} {
return
 }
set nomeoggetto ".list"
set risultato "Nessun elemento selezionato"; catch {set risultato [selection get -displayof $nomeoggetto]}
set seekfile $risultato
set stringa1 $risultato
set stringa2 " "
set risultato [string last $stringa2 $stringa1]
set stringa1 $seekfile
set valore1 $risultato
set valore2 "end"
set risultato [string range $stringa1 $valore1 $valore2]
set seekfile $risultato
set miofile  [open $FileDaAprire "r"]
set stringa1 $miofile
set valore1 $seekfile
seek $stringa1 $valore1
while {![eof $miofile]} {
set stringa1 $miofile
gets $stringa1 risultato
set linea $risultato
set stringa1 $linea
set stringa2 ""
set risultato [string match $stringa2 $stringa1]
if {$risultato == "1"} {
break
 }
set stringa1 $linea
set stringa2 "From:*"
set risultato [string match $stringa2 $stringa1]
if {$risultato == "1"} {
set stringa1 $linea
set valore1 "6"
set valore2 "end"
set risultato [string range $stringa1 $valore1 $valore2]
set Lautore $risultato
 }
set stringa1 $linea
set stringa2 "Date:*"
set risultato [string match $stringa2 $stringa1]
if {$risultato == "1"} {
set stringa1 $linea
set valore1 "5"
set valore2 "end"
set risultato [string range $stringa1 $valore1 $valore2]
set Lmsg $risultato
 }
set stringa1 $linea
set stringa2 "Subject:*"
set risultato [string match $stringa2 $stringa1]
if {$risultato == "1"} {
set stringa1 $linea
set valore1 "9"
set valore2 "end"
set risultato [string range $stringa1 $valore1 $valore2]
set Loggetto $risultato
 }
 }
while {![eof $miofile]} {
set stringa1 $miofile
gets $stringa1 risultato
set linea $risultato
set stringa1 $linea
set stringa2 ".*"
set risultato [string match $stringa2 $stringa1]
if {$risultato == "1"} {
break
 }
set nomeoggetto ".edit"
set stringa1 $linea\n
set valore1 "end"
$nomeoggetto insert $valore1 $stringa1
 }
close $miofile
set nomeoggetto ".list"
set risultato [$nomeoggetto curselection]
set MsgSelezionato $risultato
set valore1 $risultato
$nomeoggetto see $valore1
set risultato [$nomeoggetto size]
set valore1 $risultato
set valore2 "1"
set risultato [expr $valore1 - $valore2]
set nomeoggetto ".bott4"
$nomeoggetto config -state normal
if {$MsgSelezionato == "0"} {
$nomeoggetto config -state disabled
 }
set nomeoggetto ".bott5"
$nomeoggetto config -state normal
if {$MsgSelezionato == $risultato} {
$nomeoggetto config -state disabled
 }
}
proc Archivia {} {
global Lmsg
global Lautore
global Loggetto
global FileDaAprire
if {$FileDaAprire != "#tmpm.in"} {
return
 }
set file "/.nmailarchivi"
set Amedeo 1;global env; set risultato $env(HOME)
set stringa1 $risultato
set stringa2 $file
set risultato $stringa1$stringa2
set file $risultato
if {$Lautore == ""} {
return
 }
set miofile1  [open "#tmpm.in" "r"]
set miofile2  [open $file "a+"]
set nomeoggetto ".list"
set risultato "Nessun elemento selezionato"; catch {set risultato [selection get -displayof $nomeoggetto]}
set seekfile $risultato
set stringa1 $risultato
set stringa2 " "
set risultato [string last $stringa2 $stringa1]
set stringa1 $seekfile
set valore1 $risultato
set valore2 "end"
set risultato [string range $stringa1 $valore1 $valore2]
set seekfile $risultato
set stringa1 $miofile1
set valore1 $seekfile
seek $stringa1 $valore1
while {![eof $miofile1]} {
set stringa1 $miofile1
gets $stringa1 risultato
set linea $risultato
set stringa1 $miofile2
set stringa2 $linea
puts $stringa1 $stringa2
set stringa1 $linea
set stringa2 ".*"
set risultato [string match $stringa2 $stringa1]
if {$risultato == "1"} {
break
 }
 }
close $miofile1
close $miofile2
set stringa1 "Il messaggio  stato archiviato"
tk_messageBox -message $stringa1
}
proc Configura  {} {
set nomeoggetto ".fine1"
update; Mostra_$nomeoggetto
set nomeoggetto ".fine1.case"
focus $nomeoggetto
}
proc DistruggiConfig  {} {
set nomeoggetto ".fine1"
destroy $nomeoggetto
}
proc SalvaConfig  {} {
global Pop3
global Smtp
global User
global Password
global Mioindirizzo
global EliminaPosta
if {$Pop3 == ""} {
set stringa1 "Compilare tutti i campi"
tk_messageBox -message $stringa1
return
 }
if {$Smtp == ""} {
set stringa1 "Compilare tutti i campi"
tk_messageBox -message $stringa1
return
 }
if {$User == ""} {
set stringa1 "Compilare tutti i campi"
tk_messageBox -message $stringa1
return
 }
if {$Password == ""} {
set stringa1 "Compilare tutti i campi"
tk_messageBox -message $stringa1
return
 }
if {$Mioindirizzo == ""} {
set stringa1 "Compilare tutti i campi"
tk_messageBox -message $stringa1
return
 }
if {$EliminaPosta == ""} {
set stringa1 "Compilare tutti i campi"
tk_messageBox -message $stringa1
return
 }
set file "/.nmailconfig"
set Amedeo 1;global env; set risultato $env(HOME)
set stringa1 $risultato
set stringa2 $file
set risultato $stringa1$stringa2
set file $risultato
set miofile  [open $file "w+"]
set stringa1 $miofile
set stringa2 $Pop3
puts $stringa1 $stringa2
set stringa2 $Smtp
puts $stringa1 $stringa2
set stringa2 $User
puts $stringa1 $stringa2
set stringa2 $Password
puts $stringa1 $stringa2
set stringa2 $Mioindirizzo
puts $stringa1 $stringa2
set stringa2 $EliminaPosta
puts $stringa1 $stringa2
close $miofile
set nomeoggetto ".fine1"
destroy $nomeoggetto
}
proc LeggiConfig  {} {
global Pop3
global Smtp
global User
global Password
global Mioindirizzo
global EliminaPosta
set file "/.nmailconfig"
set Amedeo 1;global env; set risultato $env(HOME)
set stringa1 $risultato
set stringa2 $file
set risultato $stringa1$stringa2
set file $risultato
set stringa1 $file
set risultato [ file isfile $stringa1]
if {$risultato == "0"} {
return
 }
set miofile  [open $file "r"]
set stringa1 $miofile
gets $stringa1 risultato
set Pop3 $risultato
gets $stringa1 risultato
set Smtp $risultato
gets $stringa1 risultato
set User $risultato
gets $stringa1 risultato
set Password $risultato
gets $stringa1 risultato
set Mioindirizzo $risultato
gets $stringa1 risultato
set EliminaPosta $risultato
close $miofile
}
proc ScriviMsg  {} {
global Destinatario
global Oggetto
set Destinatario ""
set Oggetto ""
set nomeoggetto ".fine2"
update; Mostra_$nomeoggetto
set stringa1 "imsped"
set stringa2 "./bitmaps/sped.gif"
image create photo $stringa1 -file $stringa2
set stringa1 "imbozza"
set stringa2 "./bitmaps/bozza.gif"
image create photo $stringa1 -file $stringa2
set stringa1 "imimporta"
set stringa2 "./bitmaps/impf.gif"
image create photo $stringa1 -file $stringa2
set stringa1 "imann"
set stringa2 "./bitmaps/annulla.gif"
image create photo $stringa1 -file $stringa2
set nomeoggetto ".fine2.bott1"
set stringa1 "imsped"
$nomeoggetto config -image $stringa1
set nomeoggetto ".fine2.bott2"
set stringa1 "imann"
$nomeoggetto config -image $stringa1
set nomeoggetto ".fine2.bott3"
set stringa1 "imbozza"
$nomeoggetto config -image $stringa1
set nomeoggetto ".fine2.bott4"
set stringa1 "imimporta"
$nomeoggetto config -image $stringa1
}
proc Rispondi  {} {
global Lmsg
global Lautore
global Loggetto
global Destinatario
global Oggetto
if {$Lautore == ""} {
return
 }
ScriviMsg
set Destinatario $Lautore
set stringa1 "Re: "
set stringa2 $Loggetto
set risultato $stringa1$stringa2
set Oggetto $risultato
set nomeoggetto ".fine2.edit"
set stringa1 "Nel Msg. "
set valore1 "end"
$nomeoggetto insert $valore1 $stringa1
set stringa1 $Lmsg\n
set valore1 "end"
$nomeoggetto insert $valore1 $stringa1
set stringa1 $Lautore\n
set valore1 "end"
$nomeoggetto insert $valore1 $stringa1
set stringa1 "ha scritto: \n\n| "
set valore1 "end"
$nomeoggetto insert $valore1 $stringa1
set nomeoggetto ".edit"
set valore1 "0.0"
set valore2 "end"
set risultato [$nomeoggetto get $valore1 $valore2]
set stringa1 $risultato
set risultato [string trim $stringa1]
set stringa1 $risultato
set valore1 "\n"
set valore2 "\n| "
regsub -all ($valore1) $stringa1 $valore2 risultato
set nomeoggetto ".fine2.edit"
set stringa1 $risultato\n\n
set valore1 "end"
$nomeoggetto insert $valore1 $stringa1
}
proc SalvaBozza  {} {
set risultato [tk_getSaveFile -title "Salva file"]
if {$risultato == ""} {
return
 }
set miofile  [open $risultato "w+"]
set nomeoggetto ".fine2.edit"
set stringa1 $miofile
puts $stringa1 [$nomeoggetto get 0.0 end]
close $miofile
set stringa1 "Testo del Msg salvato."
tk_messageBox -message $stringa1
}
proc ImportaFile {} {
set risultato [tk_getOpenFile -title "Apri file"]
if {$risultato == ""} {
return
 }
set miofile  [open $risultato "r"]
while {![eof $miofile]} {
set stringa1 $miofile
gets $stringa1 risultato
set nomeoggetto ".fine2.edit"
set stringa1 $risultato\n
set valore1 "end"
$nomeoggetto insert $valore1 $stringa1
 }
close $miofile
}
proc DistruggiScrivi  {} {
set nomeoggetto ".fine2"
destroy $nomeoggetto
}
proc RiceviMsg  {} {
global Pop3
global User
global Password
global EliminaPosta
global Lmsg
global Lautore
global Loggetto
set Server $Pop3
set file "/.nmailconfig"
set Amedeo 1;global env; set risultato $env(HOME)
set stringa1 $risultato
set stringa2 $file
set risultato $stringa1$stringa2
set file $risultato
set stringa1 $file
set risultato [ file isfile $stringa1]
if {$risultato == "0"} {
set stringa1 "Configurare il proprio Account"
tk_messageBox -message $stringa1
return
 }
set stringa1 $Server
set opzione "110"
set Meo 1; global Meosock; global AmedeoSocket; set AmedeoSocket [socket $stringa1 $opzione];fconfigure $AmedeoSocket -blocking false; fconfigure $AmedeoSocket -buffering none
set stringa1 "#tmpm.in"
set Meosock [open $stringa1 "w+"]
global trasmissione
global finetrasmissione
fileevent $AmedeoSocket readable {
global Meosock
gets $AmedeoSocket line
set trasmissione $line
puts $Meosock $line
if [eof $AmedeoSocket] {
close $AmedeoSocket
close $Meosock
tk_messageBox -message "Trasmissione terminata"
update
set finetrasmissione "1"
}
}
vwait trasmissione
set nomeoggetto ".fine3"
update; Mostra_$nomeoggetto
update
set us "user "
set stringa1 $us
set stringa2 $User
set risultato $stringa1$stringa2
set stringa1 $risultato
puts $AmedeoSocket $stringa1
vwait trasmissione
set pass "pass "
set stringa1 $pass
set stringa2 $Password
set risultato $stringa1$stringa2
set stringa1 $risultato
puts $AmedeoSocket $stringa1
vwait trasmissione
set stringa1 "stat"
puts $AmedeoSocket $stringa1
vwait trasmissione
set stringa1 $trasmissione
set stringa2 " "
set risultato [string first $stringa2 $stringa1]
set indice1 $risultato
set stringa1 $trasmissione
set stringa2 " "
set risultato [string last $stringa2 $stringa1]
set indice2 $risultato
set stringa1 $trasmissione
set valore1 $indice1
set valore2 $indice2
set risultato [string range $stringa1 $valore1 $valore2]
set stringa1 $risultato
set risultato [string trim $stringa1]
set numeromail $risultato
incr numeromail
set cont "1"
if {$numeromail == $cont} {
set stringa1 "noop"
puts $AmedeoSocket $stringa1
 }
set nomeoggetto ".fine3.etic2"
set stringa1 "Ricezione messaggi ..."
$nomeoggetto config -text $stringa1
while {$numeromail != $cont} {
set com "retr "
set stringa1 $com
set stringa2 $cont
set risultato $stringa1$stringa2
set stringa1 $risultato
puts $AmedeoSocket $stringa1
if {$EliminaPosta == "1"} {
set com "dele "
set stringa1 $com
set stringa2 $cont
set risultato $stringa1$stringa2
set stringa1 $risultato
puts $AmedeoSocket $stringa1
 }
incr cont
vwait trasmissione
 }
vwait trasmissione
set nomeoggetto ".fine3.etic3"
set stringa1 "Chiusura collegamento ..."
$nomeoggetto config -text $stringa1
set stringa1 "quit"
puts $AmedeoSocket $stringa1
vwait finetrasmissione
update
set nomeoggetto ".fine3"
destroy $nomeoggetto
update
if {$numeromail == "1"} {
set stringa1 "Mi spiace non hai posta in arrivo "
tk_messageBox -message $stringa1
set Lmsg ""
set Lautore ""
set Loggetto ""
set nomeoggetto ".edit"
set valore1 "0.0"
set valore2 "end"
$nomeoggetto delete $valore1 $valore2
return
 }
set valore1 $numeromail
set valore2 "1"
set risultato [expr $valore1 - $valore2]
set stringa1 $risultato
set stringa2 " mail ricevuta/e"
set risultato $stringa1$stringa2
set stringa1 $risultato
tk_messageBox -message $stringa1
AprePacchetto
}
proc InviaMsg  {} {
global Smtp
global User
global Mioindirizzo
global Destinatario
global Oggetto
if {$Destinatario == ""} {
set stringa1 "Inserire il destinatario del msg."
tk_messageBox -message $stringa1
return
 }
if {$Oggetto == ""} {
set stringa1 "Inserire l'oggetto del msg."
tk_messageBox -message $stringa1
return
 }
set stringa1 $Destinatario
set stringa2 "*<*"
set risultato [string match $stringa2 $stringa1]
if {$risultato == "1"} {
set stringa1 $Destinatario
set stringa2 "<"
set risultato [string last $stringa2 $stringa1]
set indice1 $risultato
incr indice1
set stringa2 ">"
set risultato [string last $stringa2 $stringa1]
set valore1 $risultato
set valore2 "1"
set risultato [expr $valore1 - $valore2]
set indice2 $risultato
set stringa1 $Destinatario
set valore1 $indice1
set valore2 $indice2
set risultato [string range $stringa1 $valore1 $valore2]
set Destinatario $risultato
 }
set Server $Smtp
set file "/.nmailconfig"
set Amedeo 1;global env; set risultato $env(HOME)
set stringa1 $risultato
set stringa2 $file
set risultato $stringa1$stringa2
set file $risultato
set stringa1 $file
set risultato [ file isfile $stringa1]
if {$risultato == "0"} {
set stringa1 "Configurare il proprio Account"
tk_messageBox -message $stringa1
return
 }
set nomeoggetto ".fine2.edit"
set valore1 "0.0"
set valore2 "end"
set risultato [$nomeoggetto get $valore1 $valore2]
set Testomsg $risultato
set stringa1 $Server
set opzione "25"
set Meo 1; global Meosock; global AmedeoSocket; set AmedeoSocket [socket $stringa1 $opzione];fconfigure $AmedeoSocket -blocking false; fconfigure $AmedeoSocket -buffering none
set stringa1 "Log"
set Meosock [open $stringa1 "w+"]
global trasmissione
global finetrasmissione
fileevent $AmedeoSocket readable {
global Meosock
gets $AmedeoSocket line
set trasmissione $line
puts $Meosock $line
if [eof $AmedeoSocket] {
close $AmedeoSocket
close $Meosock
tk_messageBox -message "Trasmissione terminata"
update
set finetrasmissione "1"
}
}
vwait trasmissione
set nomeoggetto ".fine3"
update; Mostra_$nomeoggetto
update
set helo "helo "
set stringa1 $helo
set stringa2 $User
set risultato $stringa1$stringa2
set stringa1 $risultato
puts $AmedeoSocket $stringa1
vwait trasmissione
set mitt "mail from: "
set stringa1 $mitt
set stringa2 $Mioindirizzo
set risultato $stringa1$stringa2
set stringa1 $risultato
puts $AmedeoSocket $stringa1
vwait trasmissione
set des "rcpt to: "
set stringa1 $des
set stringa2 $Destinatario
set risultato $stringa1$stringa2
set stringa1 $risultato
puts $AmedeoSocket $stringa1
vwait trasmissione
set nomeoggetto ".fine3.etic2"
set stringa1 "Spedizione messaggio ..."
$nomeoggetto config -text $stringa1
set stringa1 "data"
puts $AmedeoSocket $stringa1
vwait trasmissione
set mitt "From: "
set stringa1 $mitt
set stringa2 $Mioindirizzo
set risultato $stringa1$stringa2
set stringa1 $risultato
puts $AmedeoSocket $stringa1
set des "To: "
set stringa1 $des
set stringa2 $Destinatario
set risultato $stringa1$stringa2
set stringa1 $risultato
puts $AmedeoSocket $stringa1
set stringa1 "X-Mailer: NidlMail"
puts $AmedeoSocket $stringa1
set og "Subject: "
set stringa1 $og
set stringa2 $Oggetto
set risultato $stringa1$stringa2
set stringa1 $risultato
puts $AmedeoSocket $stringa1
set stringa1 ""
puts $AmedeoSocket $stringa1
set stringa1 $Testomsg
puts $AmedeoSocket $stringa1
set stringa1 "\\_______ Via NidlMail 0.1 _______"
puts $AmedeoSocket $stringa1
set stringa1 "."
puts $AmedeoSocket $stringa1
vwait trasmissione
set nomeoggetto ".fine3.etic3"
set stringa1 "Chiusura collegamento ..."
$nomeoggetto config -text $stringa1
set stringa1 "quit"
puts $AmedeoSocket $stringa1
vwait finetrasmissione
update
set nomeoggetto ".fine3"
destroy $nomeoggetto
update
set nomeoggetto ".fine2"
destroy $nomeoggetto
}
proc Uscita  {} {
destroy .
}
proc bgerror {msg} {
regsub "invalid command name" $msg "Comando non riconosciuto. Creare la procedura corrispondente al comando" msg
if [string match "*unreachable*" $msg] {set msg "Impossibile aprire il socket. Controllare di avere una connessione attiva. "}
tk_messageBox -title "Nidl c Amedeo de Longis: Attenzione Errore" -icon error -message $msg 
}
ProceduraPrincipale

#----------------------------------------------------------------
#Questo file e' stato generato da Nidl c 2000 Amedeo de Longis
#                     luponero@mclink.it
#----------------------------------------------------------------
