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

Interfaces Graphiques Perl Discussion :

perl send mail - fenêtre TK


Sujet :

Interfaces Graphiques Perl

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Février 2010
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2010
    Messages : 4
    Points : 1
    Points
    1
    Par défaut perl send mail - fenêtre TK
    j'ai un problème avec l'envoie de mail avec "Lite" dans une interface graphique avec "TK".

    Mon programme liste les fichier, dans un fichier, tout les fichiers qui se trouvent dans le dossier ainsi que les sous dossiers. Ce fichier est en suite envoyé par smtp aux destinataire que l'on désire via l'interface graphique.

  2. #2
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Février 2010
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2010
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    voici le code:

    #!/usr/local/bin/perl

    use Tk; #Utilisation de Tk
    use MIME::Lite;
    #use Net::SMTP;

    #Création de la fenêtre principale
    $fen = MainWindow->new();

    #Définition de la taille min de la fenêtre
    $fen->minsize('500','400');

    #Définition du title de la fenêtre
    $fen->title("Interface Tk avec Perl");

    #Création de la barre de menu
    $barre_menu = $fen->Frame(-relief => 'groove' , -borderwidth => 2);

    #Création de la barre du menu général
    $menu_gen = $barre_menu->Menubutton(
    -text => 'Application' ,
    -font => '{Garamond} 10',
    -tearoff => 0 ,
    -menuitems => [
    [ 'command' => 'Quitter' ,
    -font => '{Garamond} 10',
    -command => \&Quitter
    ]
    ]
    );

    #Affichage du menu général à gauche
    $menu_gen->pack(-side => 'left');

    #Affichage de la barre de menu en haut de la fenêtre
    $barre_menu->pack(-side => 'top', -anchor => 'n', -fill => 'x');

    #Création de notre barre de statut à l'aide d'un Label
    $barre_statut = $fen->Label(-relief => 'groove', -text => "Hello World", -font => '{Garamond} 10');

    # nom
    $n01 = 'Christian';
    $n02 = 'Marc';
    $n03 = 'Cyril';

    #Création d'un label qui affichera le résultat de la sélection
    $fen->Label(
    -relief => 'groove',
    -textvariable => \$selectValue, #Variable contenant l'option dans la liste de sélection
    -font => '{Garamond} 10'
    )->pack(
    -fill => 'both',
    -padx => '5',
    -pady => '5'
    );
    #Création de la liste de sélection
    $fen->Optionmenu(
    -options => [ $n01, $n02, $n03, ],
    -command => sub {
    #print "choix : ", @_, "\n"
    nom(@_);
    }, #procédure de nom
    -textvariable => \$selectValue #Définition de la variable qui récupère la sélection
    )->pack();

    #Ajout de notre bouton à la fenêtre
    $fen->Button(
    -text => 'Send', #Texte du bouton
    -font => '{Garamond} 10', #Nom et taille de la police utilisée
    -command => \&clic #Action qui modifie notre variable
    )->pack(
    -pady => '5', #Marge externe du bouton
    -padx => '5',
    -ipady => '5', #Marge interne du bouton
    -ipadx => '5',
    );

    # Create three Radiobuttons in Frame widget $f1
    # Link them using $favcolor
    foreach (qw/vtx bluewin free/) {
    $fen->Radiobutton(-text => $_, -variable => \$choixsmtp,
    -value => $_)->pack(-fill => 'x', -expand=>1, -anchor => 'w');
    }

    #On l'ajoute en bas de la fenêtre afin de lui donner l'effet barre de statut
    $barre_statut->pack( -side => 'bottom', -fill => 'both');

    MainLoop;

    #Définition de notre fonction de fermeture de l'application
    sub Quitter
    {
    exit(0);
    }

    #Définition de notre fonction de fermeture de l'application
    sub nom
    {
    #print "choix : ", @_, "\n";
    $nom = @_[0];
    #print "choix : $nom \n";
    #$barre_statut -> configure ( -text => "nom") ;
    #$barre_statut -> configure ( -text => $nom) ;

    if( $nom == $n01 )
    {
    $barre_statut -> configure ( -text => $nom)
    }
    elsif( $nom == $n02 )
    {
    $barre_statut -> configure ( -text => $nom)
    }
    elsif( $nom == $n03 )
    {
    $barre_statut -> configure ( -text => $nom)
    }
    else
    {
    print "choix : de condition inconnue\n";
    }
    print "choixsmtp : $choixsmtp\n";
    }

    my $Repertoire = ".";
    my @LesFichiers = ListersFichiers($Repertoire);

    #liste
    my $txtnom = "liste.txt";
    open OUT, ">$txtnom" or die "$!";

    my @liste;

    my $taille = scalar(@liste);
    my $i = 0;
    my $ligne;

    while ($i<$taille){
    $ligne = $liste[$i];
    #print "$ligne\n";
    print OUT "$ligne\n";
    $i++;
    }

    close OUT;

    #smtp

    my $smtpnom = 'smtp.vtxnet.ch'; # serveur smtp du réseau
    my $smtpto = "xxx\@gmail.com, xxx\@hotmail.com"; # to
    my $smtpcc = "xxx\@vtxnet.ch"; # cc
    my $smtpfrom = "xxx\@vtxnet.ch"; # de
    my $smtpsujet = "liste.txt";
    my $smtptxt = $txtnom;

    my $message_body = "ceci est la liste de mes fichiers du répertoire où est lancé l'application.";



    #======================================================
    # Nombre d'arguments : 1
    # Argument(s) : un répertoire ($repertoire)
    # Retourne : Tableau de fichier (@fichiers)
    #======================================================
    sub ListersFichiers {
    my ( $repertoire ) = @_;
    my @fichiers;

    # Ouverture d'un répertoire
    opendir (my $FhRep, $repertoire)
    or die "impossible d'ouvrir le répertoire $repertoire\n";

    # Liste fichiers et répertoire sauf (. et ..)
    my @Contenu = grep { !/^\.\.?$/ } readdir($FhRep);

    # Fermeture du répertoire
    closedir ($FhRep);

    # On récupère tous les fichiers
    foreach my $nom ( @Contenu ) {
    # Fichiers
    if ( -f "$repertoire/$nom") {
    push ( @fichiers, "$repertoire/$nom" );
    push ( @liste, "$nom" );
    }
    # Repertoires
    elsif ( -d "$repertoire/$nom") {
    # recursivité
    push ( @fichiers, ListersFichiers("$repertoire/$nom") );
    }
    }

    return @fichiers;
    }

    #Définition de notre fonction de fermeture de l'application
    sub clic
    {

    my $smtp;

    ### Create the multipart container
    $smtp = MIME::Lite->new (
    From => $smtpfrom,
    To => $smtpto,
    Cc => $smtpcc,
    Subject => $smtpsujet,
    Type =>'multipart/mixed'
    ) or die "Error creating multipart container: $!\n";

    ### Add the text message part
    $smtp->attach (
    Type => 'TEXT',
    Data => $message_body
    ) or die "Error adding the text message part: $!\n";


    ### Add the text file
    $smtp->attach (
    Type => 'application/text',
    Path => $smtptxt,
    Filename => $smtptxt,
    Disposition => 'attachment'
    ) or die "Error adding $smtptxt: $!\n";


    ### Send the Message
    MIME::Lite->send('smtp', $smtpnom, Timeout=>60);
    $smtp->send("smtp");
    $barre_statut -> configure ( -text => "Clic") ;
    }

  3. #3
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Février 2010
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2010
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    mon problème se situe dans la fonction clic au niveau de l'envoie du mail à la ligne:
    $smtp->send("smtp");

    J'ai essayé:
    $smtp->send();

    mais la non plus ça ne marche pas.

    Alors je vous demande votre aide pour résoudre le problème.

    D'avance Merci

  4. #4
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Février 2010
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2010
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    pour que ça marche chez vous, il faut adapter les lignes suivantes que j'ai mis en dur pour le moment:

    #smtp

    my $smtpnom = 'smtp.vtxnet.ch'; # serveur smtp du réseau
    my $smtpto = "xxx\@gmail.com, xxx\@hotmail.com"; # to
    my $smtpcc = "xxx\@vtxnet.ch"; # cc
    my $smtpfrom = "xxx\@vtxnet.ch"; # de
    my $smtpsujet = "liste.txt";
    my $smtptxt = $txtnom;

  5. #5
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 820
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 820
    Points : 498 771
    Points
    498 771
    Par défaut
    Je transfère le post dans le forum perl.

Discussions similaires

  1. send mail avec vbs
    Par jpclutier dans le forum VBScript
    Réponses: 6
    Dernier message: 26/01/2007, 12h37
  2. [VB.net 2.0] Send Mail
    Par zitoun dans le forum VB.NET
    Réponses: 2
    Dernier message: 18/12/2006, 20h25
  3. send Mail via JSP et Servlet
    Par sovop dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 08/10/2006, 16h22
  4. [Mail] Send Mail + lien
    Par cinc dans le forum Langage
    Réponses: 11
    Dernier message: 05/10/2006, 16h15
  5. Send mail / SMTP
    Par malmzi2007 dans le forum Zope
    Réponses: 8
    Dernier message: 28/07/2006, 07h57

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