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.
|
||||
-f, --body FILE
|
||||
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'
|
||||
|
||||
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 email import encoders
|
||||
|
@ -47,6 +59,12 @@ from email.generator import Generator
|
|||
|
||||
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():
|
||||
uprint(__doc__ % globals())
|
||||
|
||||
|
@ -59,6 +77,7 @@ def run_umail():
|
|||
('a:', 'attach=', "Attacher un fichier"),
|
||||
('t:', 'content-type=', "Spécifier le type de contenu du fichier"),
|
||||
('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)
|
||||
mfrom = DEFAULT_FROM
|
||||
|
@ -70,6 +89,7 @@ def run_umail():
|
|||
bodyfile = None
|
||||
afiles = []
|
||||
amimetypes = []
|
||||
gencmd = False
|
||||
for option, value in options:
|
||||
if option in ('-h', '--help'):
|
||||
display_help()
|
||||
|
@ -90,6 +110,8 @@ def run_umail():
|
|||
bodyfile = None
|
||||
elif not path.exists(bodyfile):
|
||||
die("%s: fichier introuvable" % bodyfile)
|
||||
elif option in ('--gencmd',):
|
||||
gencmd = True
|
||||
|
||||
if not args[0:1]: die("Vous devez spécifier le sujet")
|
||||
subject = args[0]
|
||||
|
@ -169,7 +191,9 @@ def run_umail():
|
|||
if mbccs: msg['Bcc'] = ', '.join(mbccs)
|
||||
msg['Subject'] = Header(subject, 'utf-8')
|
||||
|
||||
if gencmd: print "sendmail -i -t -f %s <<EOF" % quotesh(mfrom)
|
||||
Generator(sys.stdout).flatten(msg)
|
||||
if gencmd: print "EOF"
|
||||
|
||||
if __name__ == '__main__':
|
||||
run_umail()
|
||||
|
|
Loading…
Reference in New Issue