smtp client (tcl)Lähettää postia SMTP palvelimelle #!/usr/bin/tclsh
# MINI SMTP Client
# Toimii ainakin windowssissa ja linuxissa
# pekkajarvinen@kolumbus.fi
# http://bittivuoto.org/~raspi/
# Versio 0.12
# Lisätty kommentteja
# Lisätty mahdollisuus lähettää tiedosto.
# Lisätty virheentunnistus lähetykseen.
# Todo: virheentunnistus tiedostoon (riittääkö oikat jne)
set paivaklo "[clock format [clock seconds] -format "%d.%m.%Y %T"]" ;# pp.kk.vvvv hh:mm:ss
set paiva "[clock format [clock seconds] -format "%d.%m.%Y"]" ;# pp.kk.vvvv
set eilinenpv "[clock format [expr [clock seconds] - 86400] -format "%d.%m.%Y"]" ;# pp.kk.vvvv
set smtp(from) "adminseta@localhost" ;# kuka viestin on lähettänyt
set smtp(rcpt) "kayttaja@localhost" ;# kenelle viesti lähetetään
set smtp(smtp) "localhost" ;# smtp-palvelimen osoite
set smtp(port) 25 ;# vakio: 25
set smtp(subj) "\[${paivaklo}\] Automaattinen viesti" ;# subjekti
set smtp(type) 1 ;# tyyppi 0=smtp(body) 1=smtp(tied)
set smtp(body) "Maailma ei ole vielä tuhoutunut" ;# viestin sisältö
set smtp(tied) "/logit/${eilinenpv}.log" ;# tiedosto
### ÄLÄ MUOKKAA TÄSTÄ ETEENPÄIN JOS ET OSAA TCL:ÄÄ ###
if {$smtp(type) == 1} {
set phile [open $smtp(tied) r]
while {![eof $phile]} {
set rivi [gets $phile] ;# luetaan yksi rivi
if {$rivi != ""} {
# lisätään rivi muuttujaan $data (joka sisältää koko tiedoston sisällön)
append data "$rivi\n"
}
}
close $phile ;# suljetaan tiedosto
set smtp(body) $data
}
if {[catch {set sock [socket $smtp(smtp) $smtp(port)]} msg] == 0} {
fconfigure $sock -buffering line ;# lähetetään rivi kerrallaan
gets $sock
puts $sock "MAIL FROM:<$smtp(from)>" ;# keneltä
gets $sock
puts $sock "RCPT TO:<$smtp(rcpt)>" ;# kenelle
gets $sock
puts $sock "DATA" ;# viesti alkaa
gets $sock
puts $sock "From:<$smtp(from)>" ;# keneltä
puts $sock "To:<$smtp(rcpt)>" ;# kenelle
puts $sock "Subject: $smtp(subj)" ;# subjekti
puts $sock "" ;# headeri loppuu
puts $sock "$smtp(body)" ;# sisältö
puts $sock "." ;# viesti loppuu
gets $sock
puts $sock "QUIT" ;# poistutaan
gets $sock
close $sock ;# suljetaan yhteys
} else {
puts "ERROR: $msg" ;# jotain häikkää..
}
|
  Haku

|