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

Langage Perl Discussion :

[Débutant] Envoyer un mail en smtp


Sujet :

Langage Perl

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Inscrit en
    Mars 2007
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 3
    Par défaut [Débutant] Envoyer un mail avec MIME::Lite
    Bonjour, je suis étudiant et débutant en perl, dans le cadre de mon stage je dois faire un envoi de mail automatique, je pensais utiliser le perl avec net::smtp.

    mon programe est le suivant:


    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
    #!/usr/local/bin/perl -w
    #
    use lib "<home>";
    use Env;
    use Net::SMTP;
    use Getopt::Std;
    #
    my $SMTP_SERVER = '<smtp.smtp.fr>';
    my $DEFAULT_SENDER = 'monadresse@.com';
    my $DEFAULT_RECIPIENT = 'fulguromoi@hotmail.com';
    my $DEFAULT_SUBJECT = 'coucou';
    #
    getopts('hf:t:s:', \%o);
    $o{f} ||= $DEFAULT_SENDER;
    $o{t} ||= $DEFAULT_RECIPIENT;
    $o{s} ||= $DEFAULT_SUBJECT;
    #
    if ($o{h} or $o{f} =~ /^False$/ or $o{t} =~ /^False$/ or
    		$o{s} =~/^False$/) {
    die "usage:\n\tbody | $0 [-h] [-f from (required)] [-t to (required)]
    		[-s subject (required)\n";
    }
    #
    $mailmsg=Net::SMTP->new($SMTP_SERVER);
    $mailmsg->mail($o{f});
    $mailmsg->to($o{t});
    $mailmsg->data();
    $mailmsg->datasend("To: $o{t}\n");
    $mailmsg->datasend("Subject: $o{s}\n\n");
    $mailmsg->datasend("contenu du message");
    $mailmsg->dataend();
    $mailmsg->quit;
    #
    exit;
    Lorsque je l'éxécute j'obtiens le message d'erreur suivant:
    Can't call method "mail" on an undefined value at M:\smtp4.pl line 26.
    qui correspond à la premiere occurence du net::smtp ---> $mailmsg->mail($o{f}); .
    Je pensais à un problême de librairie mais le package est bien installé.
    Un message d'erreur similaire peut intervenir lorque le programe n'arrive pas à acceder au smtp mais il n'indique pas la même ligne.
    Mon smtp n'a pas de login/password.
    Je ne sais pas quoi faire j'ai essayer plusieurs programmes tous avec la même bibliotheque et j'ai toujours la même erreur.
    Si une âme charitable détenait la science, elle serait bien gentil de m'aider

    Merchi

  2. #2
    Membre confirmé Avatar de blacksnake
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 64
    Par défaut
    Salut

    Il ya le module MIME::Lite beaucoup plus facile à utiliser, je l'utilise pour un mail de monitoring programmé ds un crontab.

    http://search.cpan.org/dist/MIME-Lite/

    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
     
    $msg = MIME::Lite->new(
      From     => 'debian_server@toto.net',
      To       => 'toto@debiantruc.fr',
      Subject  => "Server Report - $now",
      Type     => 'text/html',
      Encoding => 'base64',
      Data     => "<H4>Server report</H4>"
    );
     
     
    $msg->attach(
      Type     =>'text/html',
      Path     =>'result.txt',
      Filename =>'result.txt'
    );
     
    $msg->send('smtp', "smtp.monfai.fr", Timeout=>300);

  3. #3
    Futur Membre du Club
    Inscrit en
    Mars 2007
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 3
    Par défaut
    Apparament mon liens vers mes bibliotheques était mauvais, j'ai corrigé et ça va déjà mieu.

    Merci à toi

  4. #4
    Futur Membre du Club
    Inscrit en
    Mars 2007
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 3
    Par défaut
    Re-bonjour, décidement j'ai vraiment du mal, comme conseillé par Blacksnake, j'ai utilisé mime-lite mais j'ai encore des difficultés... je dois pas être bien doué :/
    Mon programme est le suivant
    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
    use MIME::Lite;
     
    my $TRACES = 1;
    $msg = MIME::Lite->new(
                     From     =>'a@b.com',
                     To       =>'a@b.com',
                    #  Cc       =>'some@other.com, some@more.com',
                     Subject  =>'Helloooooo, nurse!',
                     Data     =>'How\'s it goin\', eh?'
                     );
     
    print "\ndebug:$TRACES\n\n";              
    $msg->print if ($TRACES > 0);
     
    MIME::Lite->send('127.0.0.1',Debug=>0);
    J'ai également essayé avec
    $msg->send('smtp', "smtp.monfai.fr", Timeout=>300);

    Mais rien ne se passe, au mieux je peux "printer" mon code...


    message de sortie:

    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
    M:\>mm1.pl
     
    debug:1
     
    MIME-Version: 1.0
    Content-Disposition: inline
    Content-Length: 19
    Content-Transfer-Encoding: binary
    Content-Type: text/plain
    X-Mailer: MIME::Lite 3.0105 (F2.74; B3.07; Q3.07)
    Date: Fri, 6 Apr 2007 17:06:58 +0100
    From: a@b.com
    To: a@b.com
    Subject: Helloooooo, nurse!
     
    How's it goin', eh?
    J'ai essayé avec un server smtp local et le server de mon entreprise, je n'arrive pas à envoyer quelque chose, alors que les deux smtp marchent tout à fait bien avec thunderbird sans authentification. Le message n'arrive pas jusqu'à mon smtp local d'après les logs.

    J'ai donc du mal configurer mon Lite.pm ou alors je l'ai mal instalé... je pencherai plus dans ce sens, mais bon, l'instalation d'une librairie n'a pas l'air bien dur pourtant :/

    Merci beaucoup pour votre aide

    kouak

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

Discussions similaires

  1. (Débutant)Envoyer un mail sur simple clic
    Par fanico11 dans le forum Modélisation
    Réponses: 5
    Dernier message: 06/05/2008, 16h34
  2. Réponses: 6
    Dernier message: 19/09/2006, 21h55
  3. Réponses: 1
    Dernier message: 28/04/2006, 16h25
  4. [débutant][JSP] envoyer un mail
    Par bargou dans le forum Servlets/JSP
    Réponses: 6
    Dernier message: 09/09/2005, 20h13

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