Skip to content
Snippets Groups Projects
SecretSanta.py 2.60 KiB
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
import random
from dotenv import load_dotenv
import os

##Les noms des participants et leurs mails sont ici fictifs pour ne délivrer aucune information personnelle 
participants_names = ['Alice', 'Bob', 'Charlie', 'Dana']
participants_emails = ['alice@example.com', 'bob@example.com', 'charlie@example.com', 'dana@example.com']

def send_mail(email, subject, body):
    smtp_server = 'smtp.gmail.com'
    smtp_port = 587
    load_dotenv()
    smtp_username = os.getenv("SMTP_USERNAME")
    smtp_password = os.getenv("SMTP_PASSWORD")

    message = MIMEMultipart()
    message['From'] = smtp_username
    message['To'] = email
    message['Subject'] = subject

    message.attach(MIMEText(body, 'plain'))
    
    with smtplib.SMTP(smtp_server, smtp_port) as server:
        server.starttls()
        server.login(smtp_username, smtp_password)

        server.sendmail(smtp_username, email, message.as_string())
        
def tirageausort(names, emails):
    results = []
    while True:
        shuffled_names = names.copy()
        random.shuffle(shuffled_names)
        if all(giver != receiver for giver, receiver in zip(names, shuffled_names)):
            break 
    for i, name in enumerate(names):
        giver = names[i]
        receiver = shuffled_names[i]
        receiver_email = emails[names.index(receiver)]
        
        results.append((i, receiver))
    return results

def secretsanta(names, emails):
    tirage = tirageausort(names, emails)
    subject = "Super Secret Santa de la squad !!! Regarde qui tu as pioché ici ! "
    for i, receiver in tirage:
        body = f"""
Bonjour {names[i]},

Cette année, tu es le Père Noël secret de {receiver} dans notre squad ! 🎅🎁

On a fixé un budget d'environ 20-25€, mais ne t'inquiète pas si tu fais moins ou que tu dépasses un peu, l'essentiel c'est de faire plaisir ! 🌟

Allez, c'est parti ! Va t'éclater à choisir un super cadeau pour ton ami secret ! 🎉

Petit message de l'organisatrice :
Hello les copains, c'est Agathe ! Cette année, j'ai décidé de coder moi-même le tirage au sort du Père Noël secret.
Comme vous le voyez, vous recevez un mail de ma part, mais c'est bel et bien mon ordinateur qui a choisi votre personne et qui vous indique qui vous avez.
Je n'ai aucun pouvoir sur le tirage et je ne sais pas qui vous avez, donc merci de garder le secret et de ne pas répondre à ce mail !

Joyeux Père Noël secret ! 🎄🎅
"""
        print(emails[i])
        send_mail(emails[i], subject, body)
        
secretsanta(participants_names, participants_emails)