push santa!
This commit is contained in:
commit
14f66dcc90
18
README.md
Normal file
18
README.md
Normal file
@ -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.
|
4
env.py
Normal file
4
env.py
Normal file
@ -0,0 +1,4 @@
|
||||
serveurSmtp = "mail.smtp.net"
|
||||
serveurPort = 465
|
||||
serveurAdrresseMail= "secretsanta@domaine.com"
|
||||
serveurMailPassword = "mot-de-passe"
|
2
participants.csv
Normal file
2
participants.csv
Normal file
@ -0,0 +1,2 @@
|
||||
Jean-Louis,jean-louis93@gmail.com
|
||||
Nicole,nicole.dupond07@hotmail.com
|
|
73
secretSanta.py
Executable file
73
secretSanta.py
Executable file
@ -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é...")
|
60
utils/anti-spam.py
Normal file
60
utils/anti-spam.py
Normal file
@ -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é...")
|
Loading…
x
Reference in New Issue
Block a user