Envoyer un mail depuis SurfBoard + code source

Nouvelle fonction dans SurfBoard, .mail <destinataire> [objet]

Voici son mode d’emploi ainsi que le code source, sous license BSD.

Mode d’emploi

Pour envoyer un e-mail à un membre :

.mail dereckson

Pour envoyer un e-mail à une adresse :

.mail admins-irc@espace-win.org

Vous pouvez également préciser l’objet directement dans la commande .mail :

.mail techs@espace-win.org Merci pour ce script

Si pas ce sera la première ligne que vous demandera le script.

Code source

Si vous souhaitez implémanter ce script dans un autre interprétateur TCL qu’un eggdrop, pensez que control ouvre un mode spécial où toutes les entrées utilisateur sont renvoyées à la proc enregistrer_mail.

Pensez également à supprimer getuserinfo $idx email ou à le remplacer par le mail de l’expéditeur.

bind dcc - mail dcc:mail proc dcc:mail {handle idx arg} {         global mail special         if {$arg == ""} {             putdcc $idx "## Syntaxe : .mail "             return         } elseif {[validuser [lindex $arg 0]]} {             set mail($idx-to) [getuserinfo [lindex $arg 0] email]         } elseif {[regexp {^[A-Za-z0-9._-]+@[[A-Za-z0-9.-]+$} [lindex $arg 0]]} {             set mail($idx-to) [lindex $arg 0]         } else {             putdcc $idx "Destinataire invalide : [lindex $arg 0]"             return         }         set mail($idx) ""         putdcc $idx "02Alors, que désires tu envoyer comme mail ?02"         putdcc $idx "Pour envoyer l'e-mail, entre une ligne ne contenant que ceci: 02+02"         putdcc $idx "Pour annuler l'e-mail, entre une ligne ne contenant que ceci: 02-02"         set mail($idx-subject) [truncate_first_word $arg]         if {$mail($idx-subject) == ""} {             putdcc $idx "02Objet :02"         } else {             putdcc $idx "02Message :02"         }         control $idx enregistrer_mail         dccbroadcast "Tiens, $handle est parti rédiger un mail ..." } proc enregistrer_mail {idx texte} {         global mail special         if {$texte == "+"} {                 mail.send $mail($idx-to) $mail($idx-subject) $mail($idx) [getuserinfo $idx email]                 unset mail($idx)                 putdcc $idx "Envoyé :-)"                 dccbroadcast "Et, hop, un mail d'envoyé pour [idx2hand $idx] :)"                 set special($idx) noinfoline                 return 1         } elseif {$texte == "-"} {                 unset potin($idx)                 dccbroadcast "[idx2hand $idx] vient de changer d'avis et revient."                 putdcc $idx "Ok, le mail a été annulé: retour au party line !"                 set special($idx) noinfoline                 return 1         } elseif {$mail($idx-subject) == ""} {                 set mail($idx-subject) $texte                 putdcc $idx "02Message :02"         } else {                 regsub -all {\} $texte "\\\" texte                 regsub -all "'" $texte "\'" texte                 append mail($idx) "n$texte"         } } ########################################################################## # Proc utilisées par ce script                                           # ########################################################################## proc mail.send {to objet message {from {}}} {         if {$from != ""} {                 set headers "-a "From: $from""         } else {                 set headers ""         }         set fd [open "|mail $headers -s "$objet" $to" "w"]         puts $fd "$message"         flush $fd         close $fd } ########################################################################## # Renvoie <chaine> sans le premier mot                                   # # Substitut à lrange $chaine 1 end                                       # ########################################################################## proc truncate_first_word {chaine} {         set pos [expr [string first " " $chaine] + 1]         if {$pos == 0} return         string range $chaine $pos end }  

Leave a Reply

Your email address will not be published. Required fields are marked *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur la façon dont les données de vos commentaires sont traitées.