####################### # --== Send Mail ==-- # ####################### set le_mail(a) "" set le_mail(sujet) "" set le_mail(contenu) "" bind dcc A courrier dcc_sendmail proc dcc_sendmail {hand idx arg} { global le_mail if {$arg == ""} { putdcc $idx "Hé! Dis-moi à qui tu veux l'envoyer le mail ! :-)" return 0 } set le_mail(a) $arg putdcc $idx "-----> Envoyer un e-mail <-----" putdcc $idx "*** La première ligne sera le sujet du mail." putdcc $idx "'+' Pour terminer et envoyer." putdcc $idx "'-' Pour annuler." control $idx control_sendmail return 1 } proc control_sendmail {idx arg} { global le_mail switch $arg { "-" { set le_mail(a) "" set le_mail(sujet) "" set le_mail(contenu) "" return 1 } "+" { release_sendmail $idx return 1 } default { lappend le_mail(contenu) $arg return 0 } } } proc release_sendmail {idx} { global le_mail set user $le_mail(a) if [validuser $user] { set email [getuser $user XTRA EMAIL] } elseif {[string tolower $user] == "admins"} { set email "Admins@aide.igt.net" } else { set email "" } if {$email == ""} { putdcc $idx "Je ne connais pas $user ou il n'a pas de e-mail!" return 0 } putdcc $idx "Ok, j'envoie le mail maintenant..." set fd [open aidebot.mail w] puts $fd "TO: $user <$email>" puts $fd "FROM: AideBot " if {[string tolower $user] == "admins"} { puts $fd "REPLY-TO: Admins@aide.igt.net" } else { puts $fd "REPLY-TO: [getuser [idx2hand $idx] xtra email]" } set sujet 1 foreach ligne $le_mail(contenu) { if $sujet { set sujet 0 puts $fd "SUBJECT: $ligne" } else { puts $fd $ligne } } puts $fd "" puts $fd "De [getuser [idx2hand $idx] xtra vrainick] par la messagerie AideBot Express ..." close $fd set le_mail(a) "" set le_mail(sujet) "" set le_mail(contenu) "" exec cat aidebot.mail | /usr/lib/sendmail $email exec rm aidebot.mail if [valididx $idx] { putdcc $idx "Message livré, retour au party line..." } } ################## ### .MailNotes ### ################## bind dcc - mailnotes dcc_mailnotes proc dcc_mailnotes {hand idx args} { if {[notes $hand] == "0"} { putdcc $idx "Il faudrait que tu aies des notes pour ça! ;-p" return 0 } set args [lindex $args 0] if {$args == ""} { set args "1-[notes $hand]" } set email [getuser $hand xtra mail] putdccsi $idx "Ok, j'envoie vos notes ($args) par mail ($email) maintenant..." set fd [open aidebot.mail w] puts $fd "TO: [getuser $hand xtra vrainick] <$email>" puts $fd "FROM: AideBot " puts $fd "SUBJECT: Vos notes ($args) sur AideBot sont arrivées... bonne lecture!" puts $fd "" set num 0 foreach ligne [notes $hand $args] { incr num puts $fd "$num. [ctime [lindex $ligne 1]]: [lindex $ligne 0] -> [lindex $ligne 2]" puts $fd "" } close $fd exec cat aidebot.mail | /usr/lib/sendmail $email exec rm aidebot.mail putdccsi $idx "Le courriel est parti!" return 1 } ################# ### .MailNews ### ################# bind dcc - mailnews dcc_mailnews proc dcc_mailnews {hand idx args} { global news set canaux [getuser $hand xtra nouvelles] if {$canaux == ""} { set canaux "&general #aide #cours &projets #aidebot" } set email [getuser $hand xtra mail] putdccsi $idx "Ok, j'envoie les news de «$canaux» par mail ($email) maintenant..." set fd [open aidebot.mail w] puts $fd "TO: [getuser $hand xtra vrainick] <$email>" puts $fd "FROM: AideBot " puts $fd "SUBJECT: Les nouvelles (news) sur AideBot sont arrivées... bonne lecture!" puts $fd "" foreach chan $canaux { puts $fd "Les nouvelles de type: $chan" puts $fd "" set next 1 set ffd [open [lindex $news($chan) 0] r] while {![eof $ffd]} { set inp [gets $ffd] if {[eof $ffd]} {break} if {[string trim $inp " "] == ""} {continue} set who [lindex $inp 0] set date [string range [lrange [ctime [lindex $inp 1]] 1 3] 0 11] set msg [lrange $inp 2 end] puts $fd [format "%d. \[%s\] \(%s\) %s" $next $who $date $msg] incr next } close $ffd puts $fd "" puts $fd "" puts $fd "" } close $fd exec cat aidebot.mail | /usr/lib/sendmail $email exec rm aidebot.mail putdccsi $idx "Le courriel est parti!" return 1 }