Commit 888fbe41 authored by Nicolas Ollinger's avatar Nicolas Ollinger

migration de JSON à ConfigParser

parent 6b5b35cb
...@@ -11,7 +11,7 @@ destinataires ! ...@@ -11,7 +11,7 @@ destinataires !
Le script principal est mailing.py (nécessite Python 3). Le script principal est mailing.py (nécessite Python 3).
La configuration est répartie entre les fichiers suivants : La configuration est répartie entre les fichiers suivants :
- mailing.json : connexion au serveur, identité de l'expéditeur - mailing.conf : connexion au serveur, identité de l'expéditeur
- mailing.txt : sujet et corps du message qui accompagne la pièce-jointe - mailing.txt : sujet et corps du message qui accompagne la pièce-jointe
- mailing.csv : liste des destinataires et de leurs fichiers - mailing.csv : liste des destinataires et de leurs fichiers
......
# la section [server] contient le serveur SMTP, son port et le login utilisé
# le mot de passe est éventuellent fourni dans le champ passwd
[server]
hostname: smtps.univ-orleans.fr
port: 465
login: p29719
# la section [mail] contient l'adresse de l'émetteur du mailing
# le champ bcc (true/false) indique si l'émetteur doit être en copie cachée des messages
[mail]
sender: Nicolas Ollinger <Nicolas.Ollinger@univ-orleans.fr>
bcc: true
{
"server": "smtps.univ-orleans.fr",
"port": 465,
"login": "p29719",
"sender": "Nicolas Ollinger <Nicolas.Ollinger@univ-orleans.fr>"
}
2020-06-07 14:09:36,684 ==== Début du mailing ==== 2020-06-07 14:37:55,068 ==== Début du mailing ====
2020-06-07 14:09:36,874 alice.demo@mailinator.com: OK 2020-06-07 14:37:55,276 alice.demo@mailinator.com: OK
2020-06-07 14:09:37,037 bob.demo@mailinator.com: OK 2020-06-07 14:37:55,451 bob.demo@mailinator.com: OK
2020-06-07 14:09:37,043 ==== Fin du mailing ==== 2020-06-07 14:37:55,458 ==== Fin du mailing ====
...@@ -4,23 +4,30 @@ from getpass import getpass ...@@ -4,23 +4,30 @@ from getpass import getpass
from email.message import EmailMessage from email.message import EmailMessage
from email.policy import EmailPolicy from email.policy import EmailPolicy
from email.utils import formatdate from email.utils import formatdate
import csv, logging, json from configparser import ConfigParser
import csv, logging
with open('mailing.txt') as f: with open('mailing.txt') as f:
sujet=f.readline().strip() sujet=f.readline().strip()
texte=f.read(-1) texte=f.read(-1)
with open('mailing.json') as f: conf=ConfigParser()
conf=json.load(f) conf.read('mailing.conf')
if 'passwd' not in conf: if 'port' not in conf['server']:
conf['passwd']=getpass() conf['server']['port']='465'
if 'passwd' not in conf['server']:
conf['server']['passwd']=getpass()
if 'bcc' not in conf['mail']:
conf['mail']['bcc']='false'
def envoie(serveur,port,login,mdp,sujet,corps,emet,dest,pdf_path,filename): def envoie(serveur,port,login,mdp,sujet,corps,emet,dest,dobcc,pdf_path,filename):
msg=EmailMessage(EmailPolicy(utf8=False)) msg=EmailMessage(EmailPolicy(utf8=False))
msg['Subject']=sujet msg['Subject']=sujet
msg['From']=emet msg['From']=emet
msg['To']=dest msg['To']=dest
msg['Date']=formatdate(localtime=True) msg['Date']=formatdate(localtime=True)
if dobcc:
msg['Bcc']=emet
msg.set_content(corps) msg.set_content(corps)
with open(pdf_path,'rb') as f: with open(pdf_path,'rb') as f:
dapdf=f.read(-1) dapdf=f.read(-1)
...@@ -40,5 +47,6 @@ with open('mailing.csv',newline='') as f: ...@@ -40,5 +47,6 @@ with open('mailing.csv',newline='') as f:
reader=csv.reader(f) reader=csv.reader(f)
for row in reader: for row in reader:
print('{}...'.format(row[0])) print('{}...'.format(row[0]))
envoie(conf['server'],conf['port'],conf['login'],conf['passwd'],sujet,texte.format(*row[3:]),conf['sender'],row[0],row[1],row[2]) envoie(conf['server']['hostname'],int(conf['server']['port']),conf['server']['login'],conf['server']['passwd'],
sujet,texte.format(*row[3:]),conf['mail']['sender'],row[0],conf['mail']['bcc']=='true',row[1],row[2])
logging.info('==== Fin du mailing ====') logging.info('==== Fin du mailing ====')
...@@ -4,7 +4,7 @@ Cher {}, ...@@ -4,7 +4,7 @@ Cher {},
Voici un exemple d'envoi automatisé de fichiers PDF. Voici un exemple d'envoi automatisé de fichiers PDF.
La configuration du script (serveur d'envoi, login, mot de passe, adresse de l'émetteur) se fait La configuration du script (serveur d'envoi, login, mot de passe, adresse de l'émetteur) se fait
dans le fichier mailing.json. Le sujet et le corps du message sont à placer dans le fichier dans le fichier mailing.conf. Le sujet et le corps du message sont à placer dans le fichier
mailing.txt. Enfin, le fichier mailing.csv contient, au format CSV, les informations suivantes : mailing.txt. Enfin, le fichier mailing.csv contient, au format CSV, les informations suivantes :
- adresse du destinataire ; - adresse du destinataire ;
- chemin d'accès au fichier PDF à attacher au message ; - chemin d'accès au fichier PDF à attacher au message ;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment