IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

Generation de mail avec python


Sujet :

Python

  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Avril 2012
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 16
    Par défaut Generation de mail avec python
    Bonjour,

    Hello,

    Pouvez vous me guider je n'y connaîs pas grand chose au python ...

    Sur un serveur unix je recupère avec un script python des stat en bdd (une poignée de chiffre) avec ce même script j'aimerai envoyer ces données par mail (formaté en htlm) ...

    Pour la génération du mail html avec python cela ne devrai pas trop poser de problème ... mais j'aimerai générer un petit histogramme (rien de bien méchant) dans le mail ...

    Savez vous vers quoi dois-je me tourner pour faire cela ?

    Merci d'avance ++

  2. #2
    Membre Expert Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Par défaut
    Bonjour,

    Pour ce qui est des mails un petit tour sur le site d'un de nos compatriotes, Tyrtamos.
    Pour la partie génération d'un histogramme tout est possible, de la génération d'une image avec PIL (Image.new) ou encore l'option postscript du Canvas Tkinter.

    @+

  3. #3
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 720
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 720
    Par défaut
    Salut

    La bibliothèque matplotlib devrait permettre la génération d'histogramme et leur sauvegarde en .PDF ou en .PS.

    La FAQ de matplotlib indique comment générer le fichier en mode "headless" (lancer une application graphique qui affiche.

    Pour ce qui est de la construction de mail avec mime, il y a plein d'exemples qui trainent sur le web montrant comment utiliser les bibliothèques incluses dans Python.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  4. #4
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 720
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 720
    Par défaut
    Salut PauseKawa,

    Comme j'étais parti à autre chose avant de terminer mon post, je n'avais pas vu votre réponse.

    Citation Envoyé par PauseKawa Voir le message
    Pour la partie génération d'un histogramme tout est possible, de la génération d'une image avec PIL (Image.new) ou encore l'option postscript du Canvas Tkinter.
    Oui on peut faire cela ainsi mais c'est peut être plus compliqué qu'avec matplotlib.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  5. #5
    Membre Expert Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Par défaut
    Exact

    Maintenant Tkinter, PIL, matplotlib et autres ont besoins d'un screen (WM), je me trompe ?
    En shell cela me semble possible avec Imagemagick.

    @+

  6. #6
    Membre Expert Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Par défaut
    Citation Envoyé par wiztricks Voir le message
    Oui on peut faire cela ainsi mais c'est peut être plus compliqué qu'avec matplotlib.
    L'option du Canvas ? Image.new je veux bien mais pour le Canvas c'est très simple il me semble.

  7. #7
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 720
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 720
    Par défaut
    Salut

    Citation Envoyé par PauseKawa Voir le message
    Maintenant Tkinter, PIL, matplotlib et autres ont besoins d'un screen (WM), je me trompe ?
    Dans ma réponse, j'ai pris la précaution de mentionner la FAQ de matplotlib pour voir comment le faire fonctionner "head less".
    Ce n'est pas toujours sans WM mais essentiellement sans avoir besoin de lancer l'application en lui associant un display "graphique".
    Dans tous les cas, il y a une (ou des) options (os et gui dependant) pour avoir un WM headless permettant de démarrer une application graphique "dessus".
    Il est clair que l'application devra éviter d'attendre des clics de souris...

    cela peut permettre par exemple d'écrire un "browser" qui "photographie" ce qu'affiche un site pour générer un .tiff qui permettra d'analyser la présentation, OCR-iser le contenu,...
    Suivant ce qu'on cherche à faire, c'est parfois plus simple que d’interpréter les fichiers .HTML, .CSS, ... et gérer les pbs d'encoding mal foutus.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  8. #8
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 720
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 720
    Par défaut
    Salut,

    Citation Envoyé par PauseKawa Voir le message
    L'option du Canvas ? Image.new je veux bien mais pour le Canvas c'est très simple il me semble.
    Je pensais au code à écrire pour générer l'histogramme sur le canvas.
    Ce n'est pas si "compliqué": quelques dizaines de lignes de code tout au plus.
    Avec matplolib, ce sera l'appel des 2/3 fonctions trouvées dans le tuto.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  9. #9
    Membre Expert Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Par défaut
    Bonjour,

    Tkinter
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    try:
        import Tkinter as Tk
    except:
        import Tkinter as tk
     
    def setgraph(v, h=20, bg=None, fill="blue", fic="histo.ps"):
        maxheight = max(v)*h
        maxwidth = len(v)*h
        root = Tk.Tk()
        canvas = Tk.Canvas(root, width=maxwidth, height=maxheight)
        if bg:
            canvas.create_rectangle(0, 0, maxwidth, maxheight, fill=bg)
        for i, val in enumerate(v):
            canvas.create_rectangle(i*h, maxheight, i*h+h, maxheight-val*h, fill=fill)
        canvas.postscript(file=fic, width=maxwidth, height=maxheight, colormode='color')
        root.destroy()
     
    values = (5, 6, 7, 2, 1, 20, 18, 12, 5, 7, 8, 9, 12, 5, 6, 7, 2,
              1, 20, 18, 12, 5, 7, 8, 9, 12, 5, 6, 7, 2, 1, 20, 18, 12,
              5, 7, 8, 9, 12)
    setgraph(values, bg="black")
    Imagemagick (fonctionne en console donc)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    import os
     
    def setgraph(v, h=20, bg=None, fill="blue", fic="histo.jpg"):
        maxheight = max(v)*h
        maxwidth = len(v)*h
        if bg:
            bg = bg
        else:
            bg = "white"
        cmdline = "convert -size %dx%d xc:%s -fill %s -stroke black" % (maxwidth, maxheight, bg, fill)
        for i, val in enumerate(v):
            cmdline = cmdline + " -draw 'rectangle %d, %d %d, %d'" % (i*h, maxheight, i*h+h, maxheight-val*h)
        os.system("%s %s" % (cmdline, fic))
     
    values = (5, 6, 7, 2, 1, 20, 18, 12, 5, 7, 8, 9, 12, 5, 6, 7, 2,
              1, 20, 18, 12, 5, 7, 8, 9, 12, 5, 6, 7, 2, 1, 20, 18, 12,
              5, 7, 8, 9, 12)
    setgraph(values, bg="black")
    @+

  10. #10
    Membre Expert Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Par défaut
    J'allais oublier:

    Citation Envoyé par wiztricks Voir le message
    Je pensais au code à écrire pour générer l'histogramme sur le canvas.
    Ce n'est pas si "compliqué": quelques dizaines de lignes de code tout au plus.
    Avec matplolib, ce sera l'appel des 2/3 fonctions trouvées dans le tuto.
    matplotlib
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    import matplotlib
    import matplotlib.pyplot as plt
     
     
    matplotlib.use('Agg')
     
    def setgraph(v, fic="histo.png"):
        plt.plot(v)
        plt.savefig(fic)
     
    values = (5, 6, 7, 2, 1, 20, 18, 12, 5, 7, 8, 9, 12, 5, 6, 7, 2,
              1, 20, 18, 12, 5, 7, 8, 9, 12, 5, 6, 7, 2, 1, 20, 18, 12,
              5, 7, 8, 9, 12)
    setgraph(values)
    (Fonctionne dans la console: mea culpa)

  11. #11
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 720
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 720
    Par défaut
    Salut,

    Transformer une séquence de nombre en "pavés" est un histogramme plutôt minimaliste.
    Y ajoutez des axes, des échelles, des labels pour visualiser les valeurs de la série, d'autres séquences de nombres, une légende,... ne sera peut être pas nécessaire.
    Après, il y a l'intérêt de coder soi même plutôt que d'utiliser des codes déjà existants.

    Nous avons proposé plein de solutions au PO, à lui de voir.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  12. #12
    Membre Expert Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Par défaut
    Bonjour,

    Je suis d'accord mais je rajouterais ceci pour le PO:
    matplotlib est lourd (Après, il y a l'intérêt de coder soi même plutôt que d'utiliser des codes déjà existants.).
    Ajouter des axes, des échelles, des labels est simplicime dans les deux premiers cas: Cela existe sous Tkinter et le draw d'Imagemagick permet de positionner du texte.
    Utiliser Tkinter est une erreur: Les autres propositions ne sont pas WM dépendantes.
    A mon grand regret toutes les propositions faites demandes l'installation de quelque chose.

    dans l'attente du PO

  13. #13
    Membre averti
    Homme Profil pro
    Inscrit en
    Avril 2012
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 16
    Par défaut
    Salut, dsl pour cette réponse tardive mais merci à tous pour votre aide je vais creuser tout ça ...

  14. #14
    Membre éprouvé
    Avatar de Luke spywoker
    Homme Profil pro
    Etudiant informatique autodidacte
    Inscrit en
    Juin 2010
    Messages
    1 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Etudiant informatique autodidacte

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 077
    Par défaut
    Totalement hors sujet: la balise canvas du HTML5...
    On peut inclure l'histogramme dans le mail au lieu de mettre comme pièce jointe.
    Ca ne pose pas de problème a python car pour la génération de mail il envoie les données qu'on lui fournis dans le ''' ''' du mail, maintenant si cela est en externe il y a le problème de la compatibilté du navigateur client.
    Balise <canvas> HTML5.

    Internet Explorer 9, Firefox, Opera, Chrome, and Safari support the <canvas> element.

    Note: Internet Explorer 8 and earlier versions, do not support the <canvas> element.
    Mais il faut connaitre un minimun de code javascript pour généré l'histogramm.

Discussions similaires

  1. [XL-2010] Generation de mail Outlook avec pieces jointes via un tableu excel
    Par Fallenangel57 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 01/12/2014, 13h34
  2. comment créer un mail avec Zope / Python ?
    Par malmzi2007 dans le forum Zope
    Réponses: 3
    Dernier message: 12/07/2006, 19h19
  3. [TIdSMTP] Envoi d'un mail avec authentification ?
    Par BACUS dans le forum C++Builder
    Réponses: 4
    Dernier message: 16/06/2004, 16h18
  4. Conf DNS pour serveur mail avec IP dynamique ?
    Par ovh dans le forum Réseau
    Réponses: 9
    Dernier message: 14/06/2004, 22h55
  5. envoi de mail avec attachement de fichier
    Par GMI3 dans le forum Modules
    Réponses: 2
    Dernier message: 24/09/2003, 11h22

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo