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 :

Envoi mail du contenu d'une log


Sujet :

Langage Perl

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Décembre 2010
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 39
    Par défaut Envoi mail du contenu d'une log
    Bonjour à tous et très bonne année 2011 !

    Ma demande est la suivante.
    J'ai une log journalière à émettre par mail. l'idée est de lire le contenu du fichier (dans l'ex ci-dessous "test.txt") et envoyer son contenu dans le corps du message.

    Voici mes lignes de codes mais cela ne fonctionne pas. merci de votre aide.

    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
    #!/usr/bin/perl -w
    use strict; 
    use warnings;
    use Net::SMTP;
     
     
    my ($smtpserver, $from, $to, $subject, $message, $smtp, $replyaddr, $opt, $Resultat);
     
    # ouverture du fichier contenant la log
        open (Resultat, "<test.txt");	
     
    $smtpserver = "smtp";
    $from = "toto\@.fr";
    $to = "tata\@.fr";
    $subject = "Etat demarrage";
     
    # Envoi du message
    $smtp = Net::SMTP->new("$smtpserver", Timeout => 120);
    $smtp->mail("$from");
    $smtp->to("$to");
     
    $smtp->datasend("To: $to\n");
    $smtp->datasend("From: $from\n");
    $smtp->datasend("Reply-to: $replyaddr\n") if $replyaddr;
    $smtp->datasend("X-Mailer: Perl Sendmail \n");
    $smtp->datasend("Subject: $subject\n");
    $smtp->datasend("\n");
    $smtp->data();
    $smtp->datasend("Resultat\n");
    $smtp->dataend();
    $smtp->quit();
     
     close(Resultat);
     
    # message de confirmation
    print "Content-type: text/html\n\n";
    print "OK<BR>\n";
    exit;

  2. #2
    Invité
    Invité(e)
    Par défaut
    Salut et bonne année,

    C'est bien d'ouvrir et fermer ton fichier mais encore faut-il traiter son contenu.

    Je t'invite à consulter ce tutoriel.

    http://www.tutorials-expert.com/tuto...-Files-IO.html

  3. #3
    Membre averti
    Inscrit en
    Décembre 2010
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 39
    Par défaut
    Merci

    J'ai regardé ton lien mais il ne traite pas le cas d'envoi du contenu du fichier en tant que corps de message d'un mail.

    Une idée ?

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    221
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 221
    Par défaut
    Salut,

    En perl, pour lire un fichier, on procède de la façon suivante:
    1) On ouvre le fichier
    2) On fait une boucle pour parcourir chaque ligne du fichier
    3) Ensuite on le ferme

    exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    #!/usr/bin/perl
     
    open(DATA, "<file.txt");
     
    while($ligne = <DATA>)
    {
       print $ligne."\n";
    }
     
    close(DATA);

    Dans ton cas, cela pourrait se faire de la façon suivante:

    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
     
    #!/usr/bin/perl -w
    use strict; 
    use warnings;
    use Net::SMTP;
     
     
    my ($smtpserver, $from, $to, $subject, $message, $smtp, $replyaddr, $opt, $Resultat);
     
    # ouverture du fichier contenant la log
    my $corpmessage = "";
    open (Resultat, "<test.txt");	
    while($ligne = <DATA>)
    {
       $corpmessage = $corpmessage.$ligne."\n";
    }
    close(Resultat);
     
     
    $smtpserver = "smtp";
    $from = "toto\@.fr";
    $to = "tata\@.fr";
    $subject = "Etat demarrage";
     
    # Envoi du message
    $smtp = Net::SMTP->new("$smtpserver", Timeout => 120);
    $smtp->mail("$from");
    $smtp->to("$to");
     
    $smtp->datasend("To: $to\n");
    $smtp->datasend("From: $from\n");
    $smtp->datasend("Reply-to: $replyaddr\n") if $replyaddr;
    $smtp->datasend("X-Mailer: Perl Sendmail \n");
    $smtp->datasend("Subject: $subject\n");
    $smtp->datasend("\n");
    $smtp->data();
    $smtp->datasend($corpmessage);
    $smtp->dataend();
    $smtp->quit();
     
     
     
    # message de confirmation
    print "Content-type: text/html\n\n";
    print "OK<BR>\n";
    exit;

  5. #5
    Membre averti
    Inscrit en
    Décembre 2010
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 39
    Par défaut
    Bonjour,

    Merci pour ces explications.
    En appliquant ton code j'ai ces erreurs de compil'

    Name "main:ATA" used only once: possible typo at envoimail.pl line 13.
    readline() on unopened filehandle DATA at envoimail.pl line 13.

    ligne 13 contient
    while($ligne = <DATA>)
    on doit pas définir __DATA__ qq part ?

    au final, le mail est envoyer mais vide au niveau du corps de message, destinataire et sujet vides.

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    221
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 221
    Par défaut
    Faute de copier/coller....

    remplace <DATA> par <Resultat>

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

Discussions similaires

  1. Envoi le contenu d'une Views par mail ?
    Par Frisco dans le forum Langage SQL
    Réponses: 6
    Dernier message: 16/03/2007, 14h20
  2. [Mail] Envoi du contenu d'une pièce jointe par mail
    Par nonhosonno dans le forum Langage
    Réponses: 2
    Dernier message: 28/02/2007, 13h42
  3. Envoi mail aux résultats d'une requête
    Par martonpylon12 dans le forum Access
    Réponses: 2
    Dernier message: 12/01/2006, 12h13
  4. Contenu du fichier log d'une BD
    Par sandanr dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 26/10/2005, 14h50
  5. [Oracle 10g] Envoi mail avec PJ à une heure donnée
    Par djoule6 dans le forum Oracle
    Réponses: 5
    Dernier message: 25/10/2005, 11h51

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