Advertisement
ZarTek-CREOLE

Untitled

Apr 24th, 2023
1,676
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
TCL 3.46 KB | Source Code | 0 0
  1. Ce script Tcl pour Eggdrop permet de créer et envoyer des messages électroniques en utilisant le programme sendmail. Le script utilise des namespaces pour éviter les conflits de noms avec d'autres scripts ou packages Tcl.
  2.  
  3. Pour utiliser ce script, vous pouvez créer une instance en appelant la méthode de fabrique "create" de l'espace de noms "EggMail". Ensuite, vous pouvez appeler la méthode "setMessage" de l'instance pour définir les destinataires, le sujet et le corps du message. Enfin, vous pouvez appeler la méthode "sendMail" pour envoyer le message.
  4.  
  5. Voici un exemple d'utilisation :
  6.  
  7. ---
  8. # Chargement du script
  9. source EggMail.tcl
  10.  
  11. # Création d'une instance du script
  12. set emailScript [EggMail::create]
  13.  
  14. # Définition des destinataires, sujet et corps du message
  15. set subject "Test email"
  16. set body "Hello,\n\nThis is a test email.\n\nBest regards,\n"
  17.  
  18. # Appel de la méthode pour définir le message
  19. $emailScript setMessage $recipients $cc $subject $body
  20.  
  21. # Envoi du message
  22. $emailScript sendMail
  23.  
  24. ---
  25. Ce code crée une instance du script, définit les destinataires, le sujet et le corps du message, définit le message en appelant la méthode "setMessage" de l'instance, puis envoie le message en appelant la méthode "sendMail". Notez que le script utilise la commande sendmail pour envoyer le message, donc vous devez vous assurer que sendmail est installé et configuré correctement sur votre système.
  26.  
  27.  
  28. Voici le script EggSendMail par zartek-creole https://github.com/ZarTek-Creole:
  29.  
  30.  
  31.  
  32.  
  33. # Namespace declaration
  34. namespace eval EggMail {}
  35.  
  36. # Variables declaration with the correct format
  37. set EggMail::msg {}
  38. set EggMail::recipientList {}
  39. set EggMail::ccList {}
  40. set EggMail::subject {}
  41. set EggMail::body {}
  42.  
  43. # Function to set the message
  44. proc EggMail::setMessage {recipientList ccList subject body} {
  45.    # Set the recipient list
  46.    set EggMail::recipientList $recipientList
  47.  
  48.    # Set the CC list
  49.    set EggMail::ccList $ccList
  50.  
  51.    # Set the subject
  52.    set EggMail::subject $subject
  53.  
  54.    # Set the body
  55.    set EggMail::body $body
  56.  
  57.    # Build the message
  58.    EggMail::buildMessage
  59. }
  60.  
  61. # Function to build the message
  62. proc EggMail::buildMessage {} {
  63.    # Set the From header
  64.    set EggMail::msg "From: someone"
  65.  
  66.    # Set the To header
  67.    set recipientList [join $EggMail::recipientList ,]
  68.    if {$recipientList ne ""} {
  69.        append EggMail::msg "\nTo: $recipientList"
  70.    }
  71.  
  72.    # Set the CC header
  73.    set ccList [join $EggMail::ccList ,]
  74.    if {$ccList ne ""} {
  75.        append EggMail::msg "\nCc: $ccList"
  76.    }
  77.  
  78.    # Set the Subject header
  79.    set EggMail::msg "\nSubject: $EggMail::subject"
  80.  
  81.    # Set the Body
  82.    set EggMail::msg "\n\n$EggMail::body"
  83.  
  84.    # Send the message
  85.    EggMail::sendMail
  86. }
  87.  
  88. # Function to send the message
  89. proc EggMail::sendMail {} {
  90.    # Use putlog instead of puts
  91.    putlog "Sending email with the following message:\n$EggMail::msg"
  92.  
  93.    # Use try for exception handling
  94.    try {
  95.        # Use exec to call sendmail with the message as input
  96.        set cmd "/usr/lib/sendmail -oi -t << $EggMail::msg"
  97.        exec $cmd
  98.    } on error {errMsg} {
  99.        # Handle the error
  100.        putlog "Error sending email: $errMsg"
  101.    }
  102. }
  103.  
  104. # Factory method to create an instance of the script
  105. proc EggMail::create {} {
  106.    return [namespace inscope EggMail {list setMessage}]
  107. }
  108.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement