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

Web Perl Discussion :

Problem avec "use MIME::Lite


Sujet :

Web Perl

  1. #1
    Membre du Club
    Femme Profil pro
    Bio-informaticienne
    Inscrit en
    Septembre 2009
    Messages
    97
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Bio-informaticienne
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2009
    Messages : 97
    Points : 54
    Points
    54
    Par défaut Problem avec "use MIME::Lite
    Hello tous le monde,

    Je vais essayer de faire simple.... Je travail sur un serveur ou les programmes sont sur le /share donc partager par differentes machines..

    Je suis actuellement entrain de developper un programme en Perl :

    Ce programme pourra etre utiliser de deux facons differentes soit via un site internet donc il roulera specifiquement sur une de nos machines soit etre utilise localement est dans ce cas il roulera sur n'importe laquelle de nos machine.

    Mon probleme est le suivant sendmail n'ai pas installer sur toute nos machines, et nous ne voulons pas l'installer sur toutes les machines.
    Or quand je veux rouler mon programme sur les machines qui ne possede pas sendmail j'ai une erreur de compilation !!! Bah oui il me dit qu'il ne peut pas trouver sendmail.

    Y a t il possibilite de "loader" une libraririe perl telque Mime::Lite dans certaine condition... ou non ?
    Avez-vous des suggestions ?

    Merci d'avance

  2. #2
    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 : 499 184
    Points
    499 184
    Par défaut
    Si tu veux utiliser MIME::Lite sur ton serveur, tu dois l'installer.

  3. #3
    Membre du Club
    Femme Profil pro
    Bio-informaticienne
    Inscrit en
    Septembre 2009
    Messages
    97
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Bio-informaticienne
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2009
    Messages : 97
    Points : 54
    Points
    54
    Par défaut
    Merci pour la reponse seulement Mime::Lite est installe sur le serveur, ce qui fait defaut sur certaine machine c'est sendmail or MIME::Lite lorsque je fait le "use MIME::Lite" cherche absolument l'utilitaire sendmail.

    Or sur certaine machine sendmail et present et sur d'autre non, et il n'y a qu'une seul machine avec laquelle je vais reellement utiliser MIME::Lite seulement sur les autres je souhaite que le programme arrive a compiler.

    Mon probleme est la.

  4. #4
    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 : 499 184
    Points
    499 184
    Par défaut
    Tu n'as pas besoin de sendmail pour envoyer un mail via ce module. Si tu as l'adresse smtp, ça suffit.

  5. #5
    Membre du Club
    Femme Profil pro
    Bio-informaticienne
    Inscrit en
    Septembre 2009
    Messages
    97
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Bio-informaticienne
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2009
    Messages : 97
    Points : 54
    Points
    54
    Par défaut
    hmmm, je te crois sans probleme mais quand je cherche a executer mon programme sur une machine ne possedant pas sendmail, j'ai l'erreur suivante qui apparait :




    can't find an executable sendmail at /share/supported/bin/MonProg line 115
    Compilation failed in require at /share/supported/bin/MonProg line 115.
    BEGIN failed--compilation aborted at /share/supported/bin/MonProg line 115.

    Et a cette fameuse ligne 115, j'ai le code suivant :

    use MIME::Lite;

    c'est pour cette raison que je pensais que ca venais de MIME::Lite.

  6. #6
    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 : 499 184
    Points
    499 184
    Par défaut
    Si tu ne nous montres pas un minimum de code, ça va être difficile de t'aider

  7. #7
    Membre du Club
    Femme Profil pro
    Bio-informaticienne
    Inscrit en
    Septembre 2009
    Messages
    97
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Bio-informaticienne
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2009
    Messages : 97
    Points : 54
    Points
    54
    Par défaut
    Pardon pour le code il est super long plus mais ici je met le debut du code
    avec l'appel au librairie :


    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    #!/usr/bin/perl -w -- -*-Perl-*-
     
    #############################################################################
    #                                                                          
    #                                 RNAfinder                       
    #                                                                           
    # DESCRIPTION:                                                              
    # Searches for RNAs in a genome. Wrapper around RNASpinner                 
    #                                                                          
    ############################################################################
    #    Revision 1.1  2008/10/28 21:57:23  nbeck
    #    Initial check-in.
    #
    # 
     
     
    ##########################
    # Initialization section #
    ##########################
     
    require 5.00;
    use strict;
    use Term::ANSIColor qw(:constants);
    $Term::ANSIColor::AUTORESET = 1;
    use PirObject qw( LinStruct RNAPredictionList RNAfinderFileForMenu AllerpinResult);
    use IO::File;
    use File::Basename;
    use Cwd;
    use Bio::Tools::CodonTable;
    use vars qw( $VERSION $RCS_VERSION );
    use lib    ( "./lib" );
    use POSIX qw{strftime};
    use MIME::Lite;
     
    # Default umask
    umask 027;
    Donc la ligne qui pose problem a la compilation est celle ou je fais "use MIME::Lite"

    Pour le reste j'ai une sous routine appeller sendmail que j'appelle si est seulement si le programme est appeller via CGI une option de mon programme me permet de savoir si le programme est appeller via CGI ou non. Si le programme est appeller via CGI j'ai une variable $CGI = 1 et donc je fait appel a ma sous-routine sendMail si $CGI == 1 :

    &sendMail() if $CGI;

    A noter que ma routine sendMail fonctionne tres bien sur la machine ou le site est installer.

    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
    22
    23
    24
    25
    sub sendMail {
        my $filename = basename($DATAFILE);
     
        my $msg = MIME::Lite->new(  From    => 'test@gmail.com',
                                    To      => $MAIL_ADR,
                                    Subject => "RNAweasel Result for $MODELNAME on $filename",
                                    Type    => 'multipart/mixed')
                                    or die "Error creating multipart container: $!\n";
     
          $msg->attach(     Type        => 'text/html; charset="iso-8859-1"',
                            Path        => "$TMP_DIR/$filename.mail",
                            Filename    => "$filename.mail",
                            Disposition => 'inline',
                            Encoding    => 'quoted-printable')
                            or die "Error adding mail file : $!\n";
     
           $msg->attach(    Type        =>'text/plain',
                            Path        => "$TMP_DIR/$filename.ali",
                            Filename    => "$filename.ali",
                            Disposition => 'attachment',
                            Encoding    => 'quoted-printable')
                            or die "Error adding result file : $!\n";
     
           $msg->send();
    }

    Hmmm en esperant que cela va aider, je peut mettre plus de code si besoin.

  8. #8
    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 : 499 184
    Points
    499 184
    Par défaut
    Pourquoi ne pas faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $msg->send_by_smtp('smtp.toto.fr');
    au lieu de
    Je pense que le problème serait réglé.

  9. #9
    Membre du Club
    Femme Profil pro
    Bio-informaticienne
    Inscrit en
    Septembre 2009
    Messages
    97
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Bio-informaticienne
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2009
    Messages : 97
    Points : 54
    Points
    54
    Par défaut
    Merci pour la reponse, je viens de tester ca ne fonctionne malheursement pas.

    J'ai trouve une solution qui ne me plait pas forcement ce que j'ai fait est de faire appel a un sous programme que j'ai creer qui s'appelle SenMailPerl :

    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    #!/usr/bin/perl -w -- -*-Perl-*-
     
    ##########################
    # Initialization section #
    ##########################
     
    require 5.00;
    use strict;
    use MIME::Lite;
     
    ###########################
    # Deal with the arguments #
    ###########################
     
    my $MAIL_INFO_STR   = "";
    my $ATTACH_INFO_STR = "";
     
    for (;@ARGV;) {
        # Add in the regex [] ALL single-character command-line options
        my ($opt,$arg) = ($ARGV[0] =~ /^-([ga])(.*)$/);
        last if ! defined $opt;
        # Add in regex [] ONLY single-character options that
        # REQUIRE an argument, except for the 'd' debug switch.
        if ($opt =~ /[ag]/ && $arg eq "") {
            if (@ARGV < 2) {
                print "Argument required for option \"$opt\".\n";
                exit 1;
            }
            shift;
            $arg=$ARGV[0];
        }
        $MAIL_INFO_STR   = $arg if $opt eq 'g'; 
        $ATTACH_INFO_STR = $arg if $opt eq 'a';
        shift;
    }
     
    my @MAIL_INFO   = split(/\|/, $MAIL_INFO_STR);
    my @ATTACH_INFO = split(/\|/, $ATTACH_INFO_STR);
     
    my ($FROM, $TO, $SUBJECT, $TYPE) = @MAIL_INFO;
     
     
    die "Problem with -a argument must contain multiple of 5" if @ATTACH_INFO % 5 != 0;
     
    my $msg = MIME::Lite->new(  From    => $FROM,
                                To      => $TO,
                                Subject => $SUBJECT,
                                Type    => $TYPE)
                                or die "Error creating multipart container: $!\n";
     
     
    for (my $i = 0 ; $i <= @ATTACH_INFO  ; $i = $i+5) {
        my @sub_tab = @ATTACH_INFO[$i..$i+4];
     
        my ($a_type, $a_path, $a_filename, $a_dispo, $a_encod) = @sub_tab;
     
        my $a = 0;
        $msg->attach( Type        => $a_type,
                      Path        => $a_path,
                      Filename    => $a_filename,
                      Disposition => $a_dispo,
                      Encoding    => $a_encod)
                      or die "Error adding result file : $!\n";
    }
     
    $msg->send();
    exit 0;
    Et la sa fonctionne bien sur ma sous routine sendMail devient :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    sub sendMail {
        my $filename = basename($DATAFILE);
     
        my $sendmail = "perl /share/supported/bin/SendMAilPerl";
        my $subject  = "RNAweasel Result for $MODELNAME on $filename";
        my $sendmail_cmd = "$sendmail  -g \"test\@gmail.com|$MAIL_ADR|$subject|multipart/mixed\" -a \"text/html; charset=\"iso-8859-1\"|$TMP_DIR/$filename.mail|$filename.mail|inline|quoted-printable|text/plain|$TMP_DIR/$filename.ali|$filename.ali|attachment|quoted-printable\"";
     
        my $ret = system("$sendmail_cmd");
     
        if (($ret >> 8) > 1) {
            print STDERR "There was an error running 'sendmail'.\n";
        }
    }
    Je tiens a preciser que malgre le fait que cette solution fonctionne j'aimerais bien trouver autre chose car elle n'est pas tres elegante a mon gout.

    Merci pour l'aide .

  10. #10
    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 : 499 184
    Points
    499 184
    Par défaut
    Juste par curiosité, tu utilises quels versions de Perl ?

  11. #11
    Membre du Club
    Femme Profil pro
    Bio-informaticienne
    Inscrit en
    Septembre 2009
    Messages
    97
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Bio-informaticienne
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2009
    Messages : 97
    Points : 54
    Points
    54
    Par défaut
    Alors ATTENTION :

    j'utilse perl5.


    Celle ou ca ne fonctionne pas :
    Summary of my perl5 (revision 5 version 10 subversion 0) configuration:

    Celle ou ca fonctionne :
    Summary of my perl5 (revision 5.0 version 8 subversion 3) configuration:

    hmm une autre pour le fun ou ca fonctionne :
    Summary of my perl5 (revision 5 version 8 subversion 8) configuration:

    Comme on peut voir c est tres homogene...

    Enfin donc c'est perl5 que j'utilise avec des version et sous version diferrente... mais je pense pas que ca change grand choses.

  12. #12
    Membre du Club
    Femme Profil pro
    Bio-informaticienne
    Inscrit en
    Septembre 2009
    Messages
    97
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Bio-informaticienne
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2009
    Messages : 97
    Points : 54
    Points
    54
    Par défaut
    Ca y est j'ai trouver une solution plus elegante :
    Au lieu de faire :

    je fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    BEGIN {
      eval "use MIME::Lite;";
      print STDERR "Warning: MIME::Lite not loaded: $@" if $@;
    }
    Est maintenant ca fonctionne sans pb sur toute les machine .

    Merci pour l aide.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Envoi de mail avec le module MIME::Lite
    Par lesconcours dans le forum Modules
    Réponses: 0
    Dernier message: 03/11/2009, 01h00
  2. Envoi de mail avec le module MIME::Lite
    Par MikeMeilleur dans le forum Modules
    Réponses: 4
    Dernier message: 23/02/2008, 21h04
  3. [PHP/MySQL] Probleme avec ' (quote)
    Par xtaze dans le forum XQUERY/SGBD
    Réponses: 2
    Dernier message: 02/11/2006, 10h00
  4. [TP] Problème avec les uses
    Par Sid ali dans le forum Turbo Pascal
    Réponses: 14
    Dernier message: 27/02/2006, 19h12
  5. [TP] Problème avec les uses en pascal
    Par ryma501 dans le forum Turbo Pascal
    Réponses: 3
    Dernier message: 15/02/2006, 22h09

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