[Accueil] - [Plan du site] - [Rechercher] - [ C O L R T S P ]  

 
iMailer : script & email
Envoyer des emails avec pièces-jointes par smtp avec un script python 

par nojhan le 23 mai 2003

Quand on commence à exploiter la puissance de linux pour automatiser certaines tâches, il arrive un moment où l’on a besoin d’envoyer des emails avec des pièces-jointes...

Depuis l’introduction du module email, l’envoi avec pièces-jointes est grandement facilité. Le présent script est devenu moins élégant que ce que l’on peut faire, comparez avec ce simple script de quelques lignes. Le script fonctionne toujours en l’état, mais est juste moins élégant. Toute mise au goût du jour est la bienvenue :-)

Or, automatiser l’envoi d’emails avec des pièces jointes n’est pas évident a priori. Certains logiciels permettent de le faire (Mutt par exemple, mais aussi pas mal d’autres), mais ce n’est soit pas assez flexible, soit pas assez simple, etc...

Bref, le plus simple que j’ai trouvé consiste en un petit (enfin tout est relatif quand même) script en Python.

L’auteur de la version originale de ce script est Laurent Pointal. J’ai apporté qq petites modifications pour faciliter son utilisation, et maintenant ce script est disponible sous licence GPL.

Pour le télécharger :

GZ - 15.3 ko
iMailer.py + licence + logo
version 0.7

N’hésitez surtout pas à me contacter si vous l’utilisez ou si vous apporter des améliorations !

Fonctionnalités

-  Envoi d’email à plusieurs destinataires (uns par uns) ;
-  Utilisation du protocole SMTP ;
-  Gestion de pièces-jointes (encodage Base64 et quoted-printable) ;
-  Appels depuis un script python (utilisation de fichiers, chaînes de caractère ou par l’interface objet) ou en ligne de commande.

Versions

0.8
-  une correction de "Silence", trouvée sur le forum ubuntu-fr : formatage correct de la date.

0.7
-  Une correction de Olivier Fournier : l’ajout d’une en-tête « To » (certains serveurs la demandant explicitement).

0.6 Plusieurs corrections de Kris (un grand merci à lui) :
-  remplacement de "envoyeur" par expéditeur,
-  mise en place de paramètres optionnels dans le constructeur de la classe,
-  ajout d’un texte "usage" en cas d’exception (c’est un début en vrac),
-  /usr/bin/env pour python (au lieu de /bin/env).

0.5
-  Correction d’un bug (concernant l’envoi de plusieurs pièces jointes) par Kevin Javaudin (merci !).

0.4
-  Correction d’un bug (envoi d’un message plusieurs fois) par Nicolas Boquet (merci !).

0.3
-  Corrections de bugs bloquants lors de l’envoi sans pièces-jointes.

0.2
-  Possibilité d’appels en ligne de commande,
-  mise en module.

0.1
-  Première version de Laurent Pointal sur la liste python de l’AFUL.

To do

-  Permettre l’envoi à plusieurs destinataires simultanéments,
-  utiliser le module getopt,
-  utiliser le module de gestion de fichiers temporaires,
-  éviter de passer par des fichiers temporaires,
-  Faire une doc. :)

Utilisation

Note sur les "fax internet" :
-  Partir d’un fichier postscript (choisir d’imprimer dans un fichier) ;
-  Avec GhostScript, demander l’impression en tiff g32d dans un fichier ;
-  La pièce jointe est ce dernier fichier TIFF.

Exemple utilisation :

-  Passant par des fichiers :


from imailer import iMailer
mailer = iMailer()
mailer.MailerFile("expediteur@ici.fr","Sujet","emails_dests.txt","texte.txt","piece_jointe.pdf")

-  Passant par des chaines de caractères :


from imailer import iMailer
mailer = iMailer()
mailer.MailerString("expediteur@ici.com","Sujet",["dest1@labas.com","dest2@labas.com"],"Texte du mèl",["piece_jointe.pdf","piece_jointe2.ps"])

-  Passant par les méthodes :


from imailer import iMailer
mailer = iMailer()
mailer.SetTmpDir("/tmp/")
mailer.SetSmtp("smtp.nom.domaine")
mailer.SetSrc("expediteur@ici.com")
mailer.SetSubject("Sujet")
mailer.AddDest("dest1@labas.com")
mailer.AddDest("dest2@labas.com")
mailer.SetMail("Texte du mèl")
mailer.AddPj("piece_jointe.pdf")
mailer.Mailer()

-  Depuis une ligne de commande :


Commentaires

Par macgiverle 22 février 2011 : iMailer : script & email

bonjour, je suis peut-être un peu tard, mais j’ai une erreur lors de l’execution du fichier

File "C :\bd\imailer.py", line 147 if self.DEBUG : print ’>EncoderB64(%s)’ % pathFichier

comment régler ce probleme ?

merci a vous

Par NoSpamle 8 janvier 2010 : iMailer : script & email

Bonjour,

Bien que ce script commence à dater, je pense qu’il est toujours bon d’indiquer les petites erreurs.

A plusieurs reprises, vous définissez le Content-Type comme ceci :

[code] #’Text/plain ;=charset=US-ASCII’)

#’Text/plain ;charset=ISO-8859-1’)

body = writer.startbody(’Text/plain ;=charset=ISO-8859-1"’) [/code]

Ceci peut provoquer des erreurs d’encodage sur certains client de messageries.

Afin d’être conforme au standard (RFC 2616 §14.17), il est préférable d’utiliser la bonne syntaxe (Content-Type = "Content-Type" " :" media-type) :

’Text/plain ;charset=ISO-8859-1’ deviens ’Text/plain ; charset=ISO-8859-1’

Cordialement.

- RFC 2616
le 15 décembre 2006 : iMailer : lancement en ligne de commande

Bonjour,

ce script pourrait m’aider beaucoup mais lorsque je le lance en ligne de commande : imailer.py —smtp ’smtp.domaine.com’ —expediteur ’expediteur@ici.com’ —sujet ’Sujet’ —mail ’Texte du m�’ —destinataire ’dest1@labas.com’ —joindre ’piece_jointe.pdf’

j’obtiens systématiquement la liste des options comme si aucun argument n’était passé en paramètres... Je ne connais malheureusement pas le langage python. Merci du coup de main !

le 18 novembre 2006 : iMailer : script & email

Bonjour,

ce script est énorme !!

Cependant, je n’arrive qu’à le lancer en étant root, bien que tous les droits lui ai été donné.

Une solution ?


    le 18 novembre 2006 : iMailer : script & email
    Précision : En fait, en n’étant pas root, il se lance, mais tombe en erreur (un exp, un sujet, un texte un dest etc), alors qu’en root la même commande fonctionne parfaitement.....
le 8 novembre 2006 : iMailer : script & email
Enorme ! Ce script est enorme. Il va bien m’aider. Merci beaucoup.

    Par Capucinele 6 décembre 2013 : iMailer : script & email
    Ce texte a attiré mon attention, en plus du discours attrayant, je trouve cela joliment écrit et construit sans fioritures. Capucine du site de voyance gratuite en ligne
Par Andrzej Kolinskile 27 août 2005 : > iMailer : smtp authorization

My SMTP connection requires autorisation (user, password). How can I modify your program to accomodate that ?

Thank you

Andrzej Kolinski

Par kevinle 24 janvier 2005 : > iMailer : script & email

c’est remoi enf ait il y avait une ligne mal indentée dans ton programme :

Ligne 230(plus ou moins) quand tu fais ton writer.lastpart () c’est a la fin du for pa du if ;)

Voila c’était une erreur de frappe 1 ? ;)

++ Kevin


    Par NoJhanle 31 janvier 2005 : > iMailer : script & email
    Vraisemblablement, oui... un très grand merci pour la correction !
Par kevinle 24 janvier 2005 : > iMailer : script & email

bonjour bravo pour ce petit prog pas mal fait du tout. Cependant quand j’essaie d’envoyer 2 pièces jointes ca ne men envoie kune seule !!

le problème est-il connu ?

cordialement

kevin

- problème imailer.py
Par Marsle 16 juin 2004 : > iMailer : script & email
J’ai téléchargé ce script afin de l’essayer mais lorsque je tente de l’éxécuter j’ai le message suivant :zsh : aucun fichier ou répertoire de ce type : ./imailer.py Pouvez-vous m’eclairer ??

    Par NoJhanle 19 juin 2004 : > iMailer : script & email

    Au vue de votre erreur je pense que vous avez tenter de lancer le script en double-cliquant sur celui-ci (sous MacOSX vraisemblablement ... ?).

    Or le script est fait pour être lancé en ligne de commande et avec des paramètres (ou en tant que module python), il faut donc passer par un terminal comme indiqué dans l’article.

    Cela viens vraisemblablement du fait d’un problème de chemin de recherche ("path")...

    Bref, le problème viens de chez vous :)


      le 22 septembre 2006 : > iMailer : script & email
      Le fichier doit etre executable je pense(chmod) et la commande et plutot : # python ./imailer.py

Articles populaires

[Accueil] - [Plan du site] - [Rechercher] - [Admin.]       SPIP:Squelette