- Uses one of three common UNIX mail clients to return e-mail to a user regarding job status or results.
- to - the user's e-mail address
- subject - the subject line to include in the header
- body - the text of the message OR filename(s) to attach
- attach - a list of attachments
- Supports attachments if Mutt or Pine are available on the system.
- Note the two methods of attachment: a comma or space delimited list of files making up the entire body, or a list provided as a fourth argument to the procedure.
proc mailTo { { to "" } { subject "" } { body "" } { attach "" } } { if { [ string match $to $subject ] } { return -code error "mailTo: missing required arguments" } set attachment {} if { [ llength $attach ] } { foreach filename $attach { if { [ file exists $filename ] } { append attachment "-a $filename " } } } else { foreach filename [ split $body " ," ] { if { ! [ file exists $filename ] } { set attachment {} break; } else { append attachment "-a $filename " } } } foreach agent { mutt pine mailx } { if { [ string length [ auto_execok $agent ] ] } { switch $agent { mailx { if { [ string length $attachment ] } { return -code error "mailTo: no mail agent supporting attachments found" } set mailpipe [ open "| $agent -s $subject $to" w ] break; } default { set mailpipe [ open "| $agent -s $subject $attachment $to" w ] break; } } ;## end of switch } ;## end of if } ;## end of foreach if { ! [ info exists mailpipe ] } { return -code error "mailTo: no usable mail agent found on system" } if { [ catch { puts $mailpipe $body close $mailpipe } err ] } { return -code error "mailTo: $err" } return {} }
JOB See as well A tcllib based smtp mailer package for a pure tcl solution.