umail: ajout de l'option --gencmd
This commit is contained in:
parent
d445368841
commit
ed3de6d6e1
|
@ -27,13 +27,25 @@ OPTIONS
|
||||||
Corps du mail. Il est spécifié sur l'entrée standard.
|
Corps du mail. Il est spécifié sur l'entrée standard.
|
||||||
-f, --body FILE
|
-f, --body FILE
|
||||||
Spécifier un fichier qui contient le corps du message, au lieu de lire
|
Spécifier un fichier qui contient le corps du message, au lieu de lire
|
||||||
sur l'entrée standard."""
|
sur l'entrée standard.
|
||||||
|
--gencmd
|
||||||
|
Afficher la commande complète avec sendmail et l'option -f. En effet, la
|
||||||
|
commande donnée en exemple dans la section USAGE utilise une valeur par
|
||||||
|
défaut pour l'en-tête From: de l'enveloppe. Pour certains serveurs SMTP
|
||||||
|
qui requièrent que le From: de l'enveloppe corresponde à un domaine
|
||||||
|
valide, il faut forcer la valeur avec l'option -f de sendmail:
|
||||||
|
%(scriptname)s [-F FROM] ... | sendmail -t -i -f FROM
|
||||||
|
L'option --gencmd affiche une commande complète qu'il suffit d'évaluer,
|
||||||
|
e.g:
|
||||||
|
sendmail -t -i -f FROM <<EOF
|
||||||
|
...
|
||||||
|
EOF"""
|
||||||
|
|
||||||
DEFAULT_FROM = 'no-reply@univ-reunion.fr'
|
DEFAULT_FROM = 'no-reply@univ-reunion.fr'
|
||||||
|
|
||||||
import i_need_py25 # nécessite module email version 4.0
|
import i_need_py25 # nécessite module email version 4.0
|
||||||
|
|
||||||
import os, sys, mimetypes
|
import os, sys, mimetypes, re
|
||||||
from os import path
|
from os import path
|
||||||
|
|
||||||
from email import encoders
|
from email import encoders
|
||||||
|
@ -47,6 +59,12 @@ from email.generator import Generator
|
||||||
|
|
||||||
from ulib.all import *
|
from ulib.all import *
|
||||||
|
|
||||||
|
RE_UNSAFE_SH = re.compile(r'[^a-zA-Z0-9_^@%+=:,./-]')
|
||||||
|
def quotesh(s):
|
||||||
|
if not s: return "''"
|
||||||
|
if RE_UNSAFE_SH.search(s) is None: return s
|
||||||
|
return "'%s'" % s.replace("'", "'\\''")
|
||||||
|
|
||||||
def display_help():
|
def display_help():
|
||||||
uprint(__doc__ % globals())
|
uprint(__doc__ % globals())
|
||||||
|
|
||||||
|
@ -59,6 +77,7 @@ def run_umail():
|
||||||
('a:', 'attach=', "Attacher un fichier"),
|
('a:', 'attach=', "Attacher un fichier"),
|
||||||
('t:', 'content-type=', "Spécifier le type de contenu du fichier"),
|
('t:', 'content-type=', "Spécifier le type de contenu du fichier"),
|
||||||
('f:', 'body=', "Spécifier un fichier contenant le corps du message"),
|
('f:', 'body=', "Spécifier un fichier contenant le corps du message"),
|
||||||
|
(None, 'gencmd', "Générer une commande à évaluer pour envoyer le mail"),
|
||||||
])
|
])
|
||||||
options, args = get_args(None, options, longoptions)
|
options, args = get_args(None, options, longoptions)
|
||||||
mfrom = DEFAULT_FROM
|
mfrom = DEFAULT_FROM
|
||||||
|
@ -70,6 +89,7 @@ def run_umail():
|
||||||
bodyfile = None
|
bodyfile = None
|
||||||
afiles = []
|
afiles = []
|
||||||
amimetypes = []
|
amimetypes = []
|
||||||
|
gencmd = False
|
||||||
for option, value in options:
|
for option, value in options:
|
||||||
if option in ('-h', '--help'):
|
if option in ('-h', '--help'):
|
||||||
display_help()
|
display_help()
|
||||||
|
@ -90,6 +110,8 @@ def run_umail():
|
||||||
bodyfile = None
|
bodyfile = None
|
||||||
elif not path.exists(bodyfile):
|
elif not path.exists(bodyfile):
|
||||||
die("%s: fichier introuvable" % bodyfile)
|
die("%s: fichier introuvable" % bodyfile)
|
||||||
|
elif option in ('--gencmd',):
|
||||||
|
gencmd = True
|
||||||
|
|
||||||
if not args[0:1]: die("Vous devez spécifier le sujet")
|
if not args[0:1]: die("Vous devez spécifier le sujet")
|
||||||
subject = args[0]
|
subject = args[0]
|
||||||
|
@ -169,7 +191,9 @@ def run_umail():
|
||||||
if mbccs: msg['Bcc'] = ', '.join(mbccs)
|
if mbccs: msg['Bcc'] = ', '.join(mbccs)
|
||||||
msg['Subject'] = Header(subject, 'utf-8')
|
msg['Subject'] = Header(subject, 'utf-8')
|
||||||
|
|
||||||
|
if gencmd: print "sendmail -i -t -f %s <<EOF" % quotesh(mfrom)
|
||||||
Generator(sys.stdout).flatten(msg)
|
Generator(sys.stdout).flatten(msg)
|
||||||
|
if gencmd: print "EOF"
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
run_umail()
|
run_umail()
|
||||||
|
|
Loading…
Reference in New Issue