Advertisement
ZarTek-CREOLE

Untitled

Apr 24th, 2023
703
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 recipients {user1@example.com user2@example.com}
  16. set cc {user3@example.com user4@example.com}
  17. set subject "Test email"
  18. set body "Hello,\n\nThis is a test email.\n\nBest regards,\n"
  19.  
  20. # Appel de la méthode pour définir le message
  21. $emailScript setMessage $recipients $cc $subject $body
  22.  
  23. # Envoi du message
  24. $emailScript sendMail
  25.  
  26. ---
  27. 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.
  28.  
  29.  
  30. Voici le script EggSendMail par zartek-creole https://github.com/ZarTek-Creole:
  31.  
  32.  
  33.  
  34.  
  35. # Namespace declaration
  36. namespace eval EggMail {}
  37.  
  38. # Variables declaration with the correct format
  39. set EggMail::msg {}
  40. set EggMail::recipientList {}
  41. set EggMail::ccList {}
  42. set EggMail::subject {}
  43. set EggMail::body {}
  44.  
  45. # Function to set the message
  46. proc EggMail::setMessage {recipientList ccList subject body} {
  47.    # Set the recipient list
  48.    set EggMail::recipientList $recipientList
  49.  
  50.    # Set the CC list
  51.    set EggMail::ccList $ccList
  52.  
  53.    # Set the subject
  54.    set EggMail::subject $subject
  55.  
  56.    # Set the body
  57.    set EggMail::body $body
  58.  
  59.    # Build the message
  60.    EggMail::buildMessage
  61. }
  62.  
  63. # Function to build the message
  64. proc EggMail::buildMessage {} {
  65.    # Set the From header
  66.    set EggMail::msg "From: someone"
  67.  
  68.    # Set the To header
  69.    set recipientList [join $EggMail::recipientList ,]
  70.    if {$recipientList ne ""} {
  71.        append EggMail::msg "\nTo: $recipientList"
  72.    }
  73.  
  74.    # Set the CC header
  75.    set ccList [join $EggMail::ccList ,]
  76.    if {$ccList ne ""} {
  77.        append EggMail::msg "\nCc: $ccList"
  78.    }
  79.  
  80.    # Set the Subject header
  81.    set EggMail::msg "\nSubject: $EggMail::subject"
  82.  
  83.    # Set the Body
  84.    set EggMail::msg "\n\n$EggMail::body"
  85.  
  86.    # Send the message
  87.    EggMail::sendMail
  88. }
  89.  
  90. # Function to send the message
  91. proc EggMail::sendMail {} {
  92.    # Use putlog instead of puts
  93.    putlog "Sending email with the following message:\n$EggMail::msg"
  94.  
  95.    # Use try for exception handling
  96.    try {
  97.        # Use exec to call sendmail with the message as input
  98.        set cmd "/usr/lib/sendmail -oi -t << $EggMail::msg"
  99.        exec $cmd
  100.    } on error {errMsg} {
  101.        # Handle the error
  102.        putlog "Error sending email: $errMsg"
  103.    }
  104. }
  105.  
  106. # Factory method to create an instance of the script
  107. proc EggMail::create {} {
  108.    return [namespace inscope EggMail {list setMessage}]
  109. }
  110.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement