Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
M
mailing
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
lifo
Nicolas Ollinger
mailing
Commits
767c15b6
Commit
767c15b6
authored
Jun 07, 2020
by
Nicolas Ollinger
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
support de types de fichiers divers
parent
888fbe41
Changes
4
Show whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
32 additions
and
9 deletions
+32
-9
README
README
+2
-2
mailing.log
mailing.log
+10
-0
mailing.py
mailing.py
+17
-4
mailing.txt
mailing.txt
+3
-3
No files found.
README
View file @
767c15b6
Robot de mailing -- écrit en vitesse en post-COVID19
Script python pour automatiser l'envoi de fichiers
PDF
individualisés
à de nombreux utilisateurs. Par exemple, envoi de sujets d'examen à
Script python pour automatiser l'envoi de fichiers individualisés
à de nombreux utilisateurs. Par exemple, envoi de sujets d'examen
PDF
à
des étudiants.
Attention, on peut vite se retrouver à spammer le serveur et les utilisateurs.
...
...
mailing.log
View file @
767c15b6
...
...
@@ -2,3 +2,13 @@
2020-06-07 14:37:55,276 alice.demo@mailinator.com: OK
2020-06-07 14:37:55,451 bob.demo@mailinator.com: OK
2020-06-07 14:37:55,458 ==== Fin du mailing ====
2020-06-07 14:53:46,688 ==== Début du mailing ====
2020-06-07 14:54:29,406 ==== Début du mailing ====
2020-06-07 14:54:29,609 alice.demo@mailinator.com: OK
2020-06-07 14:54:29,779 bob.demo@mailinator.com: OK
2020-06-07 14:54:29,786 ==== Fin du mailing ====
2020-06-07 14:55:13,281 ==== Début du mailing ====
2020-06-07 14:55:13,471 alice.demo@mailinator.com: OK
2020-06-07 14:55:13,641 bob.demo@mailinator.com: OK
2020-06-07 14:55:13,839 nopid@free.fr: OK
2020-06-07 14:55:13,846 ==== Fin du mailing ====
mailing.py
View file @
767c15b6
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from
sys
import
version_info
if
version_info
[
0
]
!=
3
:
print
(
"This script requires Python 3"
)
exit
()
from
smtplib
import
SMTP_SSL
from
getpass
import
getpass
from
email.message
import
EmailMessage
...
...
@@ -6,6 +12,12 @@ from email.policy import EmailPolicy
from
email.utils
import
formatdate
from
configparser
import
ConfigParser
import
csv
,
logging
import
mimetypes
mimetypes
.
init
()
mimetypes
.
add_type
(
'application/pdf'
,
'.pdf'
)
def
autotype
(
path
,
default
=
(
'application/pdf'
,)):
return
(
mimetypes
.
guess_type
(
path
)
or
default
)[
0
]
.
split
(
'/'
)
with
open
(
'mailing.txt'
)
as
f
:
sujet
=
f
.
readline
()
.
strip
()
...
...
@@ -20,7 +32,7 @@ if 'passwd' not in conf['server']:
if
'bcc'
not
in
conf
[
'mail'
]:
conf
[
'mail'
][
'bcc'
]
=
'false'
def
envoie
(
serveur
,
port
,
login
,
mdp
,
sujet
,
corps
,
emet
,
dest
,
dobcc
,
pdf
_path
,
filename
):
def
envoie
(
serveur
,
port
,
login
,
mdp
,
sujet
,
corps
,
emet
,
dest
,
dobcc
,
file
_path
,
filename
):
msg
=
EmailMessage
(
EmailPolicy
(
utf8
=
False
))
msg
[
'Subject'
]
=
sujet
msg
[
'From'
]
=
emet
...
...
@@ -29,9 +41,10 @@ def envoie(serveur,port,login,mdp,sujet,corps,emet,dest,dobcc,pdf_path,filename)
if
dobcc
:
msg
[
'Bcc'
]
=
emet
msg
.
set_content
(
corps
)
with
open
(
pdf_path
,
'rb'
)
as
f
:
dapdf
=
f
.
read
(
-
1
)
msg
.
add_attachment
(
dapdf
,
maintype
=
'application'
,
subtype
=
'pdf'
,
filename
=
filename
)
with
open
(
file_path
,
'rb'
)
as
f
:
dafile
=
f
.
read
(
-
1
)
ftype
=
autotype
(
file_path
)
msg
.
add_attachment
(
dafile
,
maintype
=
ftype
[
0
],
subtype
=
ftype
[
1
],
filename
=
filename
)
with
SMTP_SSL
(
serveur
,
port
)
as
server
:
server
.
login
(
login
,
mdp
)
try
:
...
...
mailing.txt
View file @
767c15b6
Cette ligne contient le sujet du message
Cher {},
Voici un exemple d'envoi automatisé de fichiers
PDF
.
Voici un exemple d'envoi automatisé de fichiers.
La configuration du script (serveur d'envoi, login, mot de passe, adresse de l'émetteur) se fait
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 :
- adresse du destinataire ;
- chemin d'accès au fichier
PDF
à attacher au message ;
- nom associé au fichier
PDF
dans le message ;
- chemin d'accès au fichier à attacher au message ;
- nom associé au fichier dans le message ;
- autant d'éléments que nécessaires pour remplir les champs variables du corps du message.
Lors de l'exécution de mailing.py, si le fichier de configuration ne contient pas le champ passwd,
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment