commit 14f66dcc904b2cda306c06ee50f8462f9cc4b1cf Author: GregLebreton Date: Sat Jul 16 21:45:49 2022 +0200 push santa! diff --git a/README.md b/README.md new file mode 100644 index 0000000..d2065e2 --- /dev/null +++ b/README.md @@ -0,0 +1,18 @@ +# secret-santa-py + +Script python pour automatiser le secret santa. + +#### 1) Remplir le env.py avec les informations du serveur d'envoie de mail. + +#### 2) Fournir une liste au format .csv au format nom,adressemail (voir participants.csv) + +## UTILISATION: + +```bash +python3 secretSanta.py +``` + +## UTILITAIRE + +Dans utils se trouve un script pour envoyer un mail au préalable en cas de courrier détecté comme indésirable. +* note: Doit être lançé avec un fichier participants.csv dans le même dossier. \ No newline at end of file diff --git a/env.py b/env.py new file mode 100644 index 0000000..6593dbe --- /dev/null +++ b/env.py @@ -0,0 +1,4 @@ +serveurSmtp = "mail.smtp.net" +serveurPort = 465 +serveurAdrresseMail= "secretsanta@domaine.com" +serveurMailPassword = "mot-de-passe" diff --git a/participants.csv b/participants.csv new file mode 100644 index 0000000..1268cba --- /dev/null +++ b/participants.csv @@ -0,0 +1,2 @@ +Jean-Louis,jean-louis93@gmail.com +Nicole,nicole.dupond07@hotmail.com \ No newline at end of file diff --git a/secretSanta.py b/secretSanta.py new file mode 100755 index 0000000..21ac6a5 --- /dev/null +++ b/secretSanta.py @@ -0,0 +1,73 @@ +import random, smtplib, ssl, sys, csv +sys.path.append("env.py") +from env import serveurMailPassword, serveurPort, serveurSmtp, serveurAdrresseMail + +## CLASSE ## +class Personne: + def __init__(self, name, email): + self.name = name + self.email = email + + def getName(self): + return self.name + + def getEmail(self): + return self.email + +## FONCTIONS ## +def import_from_csv(): + personnes = [] + with open('participants.csv', 'r') as file: + reader = csv.reader(file) + for row in reader: + personne = Personne(row[0], row[1]) + personnes.append(personne) + return personnes + +def split_names(names): + return [name.strip() for name in names.split(",")] + +def make_pairs(names): + return [ + (name, names[(i + 1) % len(names)]) + for i, name in enumerate(names) + ] + +def send_mail(mail, emailAddress): + port = serveurPort + smtp_server = serveurSmtp + sender_email = serveurAdrresseMail + receiver_email = emailAddress + password = serveurMailPassword + message = """\ + Sujet: Secret Santa + + {mail}\ + Joyeux Noel!""" + + context = ssl.create_default_context() + with smtplib.SMTP_SSL(smtp_server, port, context=context) as server: + try: + server.login(sender_email, password) + server.sendmail(sender_email, receiver_email, message.format(mail=mail)) + except Exception as e: + print("Houston... on a un problème! erreur: " + str(e)) + finally: + server.quit() + +# ## MAIN ## +personnes = import_from_csv() + +# mélange aléatoire des noms +random.shuffle(personnes) +pairs = make_pairs(personnes) + +# répartition et envoie des mails +for donneur, receveur in pairs: + # Pour test le print + #print("{} va offrir un cadeau à {}".format(donneur.name, receveur.name)) + mail = 'Bonjour {}, cette annee, tu vas offrir un cadeau a {}'.format(donneur.name, receveur.name) + + send_mail(mail, donneur.email) + +print("Secret santa est passé...") \ No newline at end of file diff --git a/utils/anti-spam.py b/utils/anti-spam.py new file mode 100644 index 0000000..4b28fd4 --- /dev/null +++ b/utils/anti-spam.py @@ -0,0 +1,60 @@ +import random, smtplib, ssl, sys, csv +sys.path.append("env.py") +from env import serveurMailPassword, serveurPort, serveurSmtp, serveurAdrresseMail + + +## CLASSE ## +class Personne: + def __init__(self, name, email): + self.name = name + self.email = email + + def getName(self): + return self.name + + def getEmail(self): + return self.email + +## FONCTIONS ## +def import_from_csv(): + personnes = [] + with open('participants.csv', 'r') as file: + reader = csv.reader(file) + for row in reader: + personne = Personne(row[0], row[1]) + personnes.append(personne) + return personnes + +def send_mail(mail, emailAddress): + port = serveurPort + smtp_server = serveurSmtp + sender_email = serveurAdrresseMail + receiver_email = emailAddress + password = serveurMailPassword + message = """\ + Sujet: Secret Santa + + {mail} + + Joyeuses fetes!""" + + context = ssl.create_default_context() + with smtplib.SMTP_SSL(smtp_server, port, context=context) as server: + try: + server.login(sender_email, password) + server.sendmail(sender_email, receiver_email, message.format(mail=mail)) + except Exception as e: + print("Houston... on a un problème! erreur: " + str(e)) + finally: + server.quit() + +# ## MAIN ## +personnes = import_from_csv() + +# répartition et envoie des mails +for donneur in personnes: + mail = 'Bonjour {}, juste un petit mail a retirer des courriers indesirables\n pour recevoir le mail du secret santa le soir venu.'.format(donneur.name) + + send_mail(mail, donneur.email) + +print("Anti-spam envoyé...") \ No newline at end of file