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 :

Pb envoi d'un message avec rfc


Sujet :

Langage Perl

  1. #1
    Candidat au Club
    Inscrit en
    Juin 2009
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 12
    Points : 2
    Points
    2
    Par défaut Pb envoi d'un message avec rfc
    Bonjour à tous.

    Je ne suis pas à l'aise avec perl qui est un language que connais très peu.

    J'avais un script qui me permettait d'envoyer en mail le résultat des sauvegardes noctures.

    Cela fonctionnait très bien avec Groupwise de Novell.

    or nous avons migré sous Mdaemon et depuis mes messages ne passent plus...

    Net::SMTP=GLOB(0x43c6370)>>> .
    Net::SMTP=GLOB(0x43c6370)<<< 554 Message is not RFC compliant
    Net::SMTP=GLOB(0x43c6370)>>> QUIT
    Net::SMTP=GLOB(0x43c6370)<<< 221 See ya in cyberspace

    J'ai beau chercher partout, je ne trouve pas la réponse à ma question...

    Pouvez-vous m'aider ?

  2. #2
    Expert confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    3 577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2009
    Messages : 3 577
    Points : 5 753
    Points
    5 753
    Par défaut
    Peux-tu montre le script (ou bout de script) concerné ?
    Plus j'apprends, et plus je mesure mon ignorance (philou67430)
    Toute technologie suffisamment avancée est indiscernable d'un script Perl (Llama book)
    Partagez vos problèmes pour que l'on partage ensemble nos solutions : je ne réponds pas aux questions techniques par message privé
    Si c'est utile, say

  3. #3
    Candidat au Club
    Inscrit en
    Juin 2009
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 12
    Points : 2
    Points
    2
    Par défaut
    #! /usr/bin/perl -w

    use strict;
    use Getopt::Long;
    use Net::SMTP;

    my $mercure="172.16.7.10";
    my $depuis="adm-reseau\@mon_domaine.fr";
    my $vers="adm-reseau\@mon_domaine.fr";

    open (FICHIER,"/root/progs/perl/etat1.txt") or die ("open: $!");
    my $body = join "", <FICHIER>;
    close (FICHIER);
    #=======================================
    my $text1 =" Sauvegardes du ";
    my $text2 =" au ";

    open (FIC1,"date --date '1 day ago' '+%d/%m/%Y'|");
    my $date1 = join "", <FIC1>;
    close (FIC1);
    #print ("$date1\n");

    open (FIC2,"date '+%d/%m/%Y'|");
    my $date2 = join "", <FIC2>;
    close (FIC2);
    #print ("$date2\n");

    open (FIC3,"date '+%w'|");
    my $date3 = join "", <FIC3>;
    close (FIC3);
    #print ("$date3\n");

    open (FIC4,"date --date '3 days ago' '+%d/%m/%Y'|");
    my $date4 = join "", <FIC4>;
    close (FIC4);
    #print ("$date4\n");

    open (FIC5,"hostname|");
    my $serveur = join "", <FIC5>;
    close (FIC5);


    # my $date_ref1= join(" ", $serveur.$text1.$date1.$text2.$date2);
    # my $date_ref2= join(" ", $serveur.$text1.$date4.$text2.$date2);

    # my $date_ref1 = join "", $serveur, $text1, $date1, $text2, $date2;
    # my $date_ref2=$serveur.$text1.$date4.$text2.$date2;

    my $date_ref1 = "hello, cest moi";
    my $date_ref2 = "hello, cest moi";

    print ("$date_ref1\n");
    print ("$date_ref2");

    my $smtp = Net::SMTP->new($mercure, Debug => 1, Timeout => 30);
    # my $smtp = Net::SMTP->new($mercure);

    $smtp->mail($depuis);
    $smtp->to($vers);


    $smtp->data();

    $smtp->datasend("From: $depuis");
    $smtp->datasend("To: $vers");
    $smtp->datasend("Date: $date2");



    # ================== section Subject


    if( $date3 == 1 ) { $smtp->datasend("Subject: $date_ref2\n"); }
    else
    { $smtp->datasend("Subject: $date_ref1\n"); }

    $smtp->datasend("\n");


    # ================== fin section Subject

    if( $date3 == 1 )
    { $smtp->datasend("$date_ref2"); }
    else
    { $smtp->datasend("$date_ref1"); }
    $smtp->datasend("$body");

    $smtp->datasend("\n");

    $smtp->dataend();

    $smtp->quit;

  4. #4
    Candidat au Club
    Inscrit en
    Juin 2009
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 12
    Points : 2
    Points
    2
    Par défaut
    Bonjour Philou...

    Voici le script...

    Je fais des essai dans tous les sens... Je ne vois pas ce qui cloche..

  5. #5
    Candidat au Club
    Inscrit en
    Juin 2009
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 12
    Points : 2
    Points
    2
    Par défaut
    Bonjour Philou..

    Excuses-moi pour le MP, c'était une erreur de ma part...

  6. #6
    Candidat au Club
    Inscrit en
    Juin 2009
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 12
    Points : 2
    Points
    2
    Par défaut
    Ca avance.. Le message passe... Mais j'ai encore un petit problême d'inculture...

    Je n'arrive pas à trouver comment concaténer correctement plusieurs variables
    en une seule ligne..

    ===============================================
    my $text1 =" Sauvegardes du ";
    my $text2 =" au ";

    open (FIC1,"date --date '1 day ago' '+%d/%m/%Y'|");
    my $date1 = join "", <FIC1>;
    close (FIC1);
    #print ("$date1\n");

    open (FIC2,"date '+%d/%m/%Y'|");
    my $date2 = join "", <FIC2>;
    close (FIC2);
    #print ("$date2\n");

    open (FIC3,"date '+%w'|");
    my $date3 = join "", <FIC3>;
    close (FIC3);
    #print ("$date3\n");

    open (FIC4,"date --date '3 days ago' '+%d/%m/%Y'|");
    my $date4 = join "", <FIC4>;
    close (FIC4);
    #print ("$date4\n");

    open (FIC5,"hostname|");
    my $serveur = join "", <FIC5>;
    close (FIC5);


    # my $date_ref1= join(" ", $serveur.$text1.$date1.$text2.$date2);
    # my $date_ref2= join(" ", $serveur.$text1.$date4.$text2.$date2);

    my $date_ref1=$serveur.$text1.$date1.$text2.$date2;
    my $date_ref2=$serveur.$text1.$date4.$text2.$date2;

    print ("$date_ref1");
    print ("$date_ref2");

    # ================== section Subject


    if( $date3 == 1 ) { $smtp->datasend("Subject: $date_ref2\n"); }
    else
    { $smtp->datasend("Subject: $date_ref1\n"); }
    $smtp->datasend("\n");

    # ================== fin section Subject

    if( $date3 == 1 )
    { $smtp->datasend("$date_ref2"); }
    else
    { $smtp->datasend("$date_ref1"); }

    ===============================================

    donne :

    Net::SMTP=GLOB(0x1cec6f50)>>> Subject: RHsave1
    Net::SMTP=GLOB(0x1cec6f50)>>> Sauvegardes du 29/06/2009
    Net::SMTP=GLOB(0x1cec6f50)>>> au 30/06/2009
    Net::SMTP=GLOB(0x1cec6f50)>>> RHsave1
    Net::SMTP=GLOB(0x1cec6f50)>>> Sauvegardes du 29/06/2009
    Net::SMTP=GLOB(0x1cec6f50)>>> au 30/06/2009

    ===============================================
    Donc, pour lui : Pas de sujet.....

    Je mettrrais le script complet à disposition des que tout sera ok...
    Merci de m'aider.

  7. #7
    Expert confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    3 577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2009
    Messages : 3 577
    Points : 5 753
    Points
    5 753
    Par défaut
    Pourrais-tu :
    - utiliser les balises [code] ... [/code] autour du code (ou utiliser le bouton ).
    - décrire précisément ce que tu attends, ce que tu obtiens, et à partir de quelles lignes de ton script, car là, il faut tout lire et tout comprendre pour essayer de deviner ce qui ne convient pas...
    Plus j'apprends, et plus je mesure mon ignorance (philou67430)
    Toute technologie suffisamment avancée est indiscernable d'un script Perl (Llama book)
    Partagez vos problèmes pour que l'on partage ensemble nos solutions : je ne réponds pas aux questions techniques par message privé
    Si c'est utile, say

  8. #8
    Candidat au Club
    Inscrit en
    Juin 2009
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 12
    Points : 2
    Points
    2
    Par défaut
    Excuses-moi, mais je ne suis pas familier avec ce forum et ses codes...

    [code]
    my $date_ref1=$serveur.$text1.$date1.$text2.$date2;
    my $date_ref2=$serveur.$text1.$date4.$text2.$date2;
    [\code]

    donne :

    Net::SMTP=GLOB(0x19a5bf50)>>> Subject: RHsave1
    Net::SMTP=GLOB(0x19a5bf50)>>> Sauvegardes du 29/06/2009
    Net::SMTP=GLOB(0x19a5bf50)>>> au 30/06/2009
    Net::SMTP=GLOB(0x19a5bf50)>>> RHsave1
    Net::SMTP=GLOB(0x19a5bf50)>>> Sauvegardes du 29/06/2009
    Net::SMTP=GLOB(0x19a5bf50)>>> au 30/06/2009

    au lieu de :


    donne :

    Net::SMTP=GLOB(0x19a5bf50)>>> Subject: RHsave1 Sauvegardes du 29/06/2009 au 30/06/2009

    Puis debut du corps du message... (donc avec un saut de ligne, je crois..)

    Net::SMTP=GLOB(0x19a5bf50)>>> RHsave1 Sauvegardes du 29/06/2009 au 30/06/2009

    Cela te convient-il ?

  9. #9
    Expert confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    3 577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2009
    Messages : 3 577
    Points : 5 753
    Points
    5 753
    Par défaut
    Hum... comment dire, la balise fermante, c'est avec un /, pas un \ (tu peux éditer ton message).
    Plus j'apprends, et plus je mesure mon ignorance (philou67430)
    Toute technologie suffisamment avancée est indiscernable d'un script Perl (Llama book)
    Partagez vos problèmes pour que l'on partage ensemble nos solutions : je ne réponds pas aux questions techniques par message privé
    Si c'est utile, say

  10. #10
    Expert confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    3 577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2009
    Messages : 3 577
    Points : 5 753
    Points
    5 753
    Par défaut
    Je vois que tu utilises l'utilitaire système "date" pour faire des calculs de date.
    Mais il existe des modules perl pour traiter des dates.
    Ensuite, il serait sans doute bon de chomper la lecture de tous ces pipes (si tu persistes à utiliser la commande date du système) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $date = join "", map { chomp; $_ } <FIC1>;
    Plus j'apprends, et plus je mesure mon ignorance (philou67430)
    Toute technologie suffisamment avancée est indiscernable d'un script Perl (Llama book)
    Partagez vos problèmes pour que l'on partage ensemble nos solutions : je ne réponds pas aux questions techniques par message privé
    Si c'est utile, say

  11. #11
    Expert confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    3 577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2009
    Messages : 3 577
    Points : 5 753
    Points
    5 753
    Par défaut
    Par exemple, pour construire la date d'hier et d'aujourd'hui :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    use POSIX qw(strftime);
     
    $hier = strftime "%d/%m/%Y", localtime(time - 86400);
    $aujourdhui = strftime "%d/%m/%Y", localtime;
    Plus j'apprends, et plus je mesure mon ignorance (philou67430)
    Toute technologie suffisamment avancée est indiscernable d'un script Perl (Llama book)
    Partagez vos problèmes pour que l'on partage ensemble nos solutions : je ne réponds pas aux questions techniques par message privé
    Si c'est utile, say

  12. #12
    Candidat au Club
    Inscrit en
    Juin 2009
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 12
    Points : 2
    Points
    2
    Par défaut
    Merci pour ton aide.. Je vais tester ton code..

    Néanmoins, je n'arrive toujour pas à accoller mes variables pour en faire
    un ligne unique.

    J'ai fais des essais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    my $prem = "1";
    my $deus = "2";
     
    my $douz = $prem . $deus . "\n";
    print $douz;
    Et tout ça me donne bien :
    12
    (avec le saut le ligne..)

    dans mon script d'envoi de message

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    my $date_ref1 = $serveur . $text1 . $date1 . $text2 . $date2, "\n";
    my $date_ref2 = $serveur . $text1 . $date4 . $text2 . $date2, "\n";
     
    print ("$date_ref1");
    print ("$date_ref2");
    me donne :


    RHsave1
    Sauvegardes du 29/06/2009
    au 30/06/2009
    RHsave1
    Sauvegardes du 29/06/2009
    au 30/06/2009


    Je ne sais pas pourquoi, j'ai c'est sauts de ligne....

  13. #13
    Membre habitué Avatar de mensoif
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    248
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 248
    Points : 129
    Points
    129
    Par défaut
    Et si tu "chompais" les variables lors de l'extraction ou avant la concaténation ?

    Il y a certainement des caractère de saut de ligne qui sont extrait et lorsque tu les réinjectes dans une chaîne tu les injectes aussi.

    I think..

  14. #14
    Expert confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    3 577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2009
    Messages : 3 577
    Points : 5 753
    Points
    5 753
    Par défaut
    Parce que tu ne chompes pas... corrige ton code comme indiqué précédemment et reviens si ça ne marche pas (mais je te conseille d'utiliser localtime, strftime et time pour le formatage des dates, plutôt que la commande date du système, qui n'est pas portable).
    Plus j'apprends, et plus je mesure mon ignorance (philou67430)
    Toute technologie suffisamment avancée est indiscernable d'un script Perl (Llama book)
    Partagez vos problèmes pour que l'on partage ensemble nos solutions : je ne réponds pas aux questions techniques par message privé
    Si c'est utile, say

  15. #15
    Candidat au Club
    Inscrit en
    Juin 2009
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 12
    Points : 2
    Points
    2
    Par défaut
    Ok, je vais essayer et je te dis....

  16. #16
    Candidat au Club
    Inscrit en
    Juin 2009
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 12
    Points : 2
    Points
    2
    Par défaut
    Excélent...
    Avec la méthode chomp, cela fonctionne parfaitement. Tu as donc raison, il doit garder un caractère non visible qui lui faisait sauter des lignes.

    Pour ton autre méthode, je vais essayer aussi, mais il faut déja que j'en comprenne bien la syntaxe....

    Le problème des rfc venait du champs Date:

    date -R, --rfc-2822 afficher la date selon le format respectant
    les spécifications du RFC-822

    Si tu le veux, je peux fournir le script complet...

    Je te remercie pour ton aide efficace..

  17. #17
    Candidat au Club
    Inscrit en
    Juin 2009
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 12
    Points : 2
    Points
    2
    Par défaut
    Excélent...
    Avec la méthode chomp, cela fonctionne parfaitement. Tu as donc raison, il doit garder un caractère non visible qui lui faisait sauter des lignes.

    Pour ton autre méthode, je vais essayer aussi, mais il faut déja que j'en comprenne bien la syntaxe....

    Le problème des rfc venait du champs Date:

    date -R, --rfc-2822 afficher la date selon le format respectant
    les spécifications du RFC-822

    Si tu le veux, je peux fournir le script complet...

    Je te remercie pour ton aide efficace..

  18. #18
    Expert confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    3 577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2009
    Messages : 3 577
    Points : 5 753
    Points
    5 753
    Par défaut
    Dans ce cas, regarde du coté de ce module : Email::Date::Format - produce RFC 2822 date strings
    Sinon, je suis sur que tu peux reproduire le format RFC 2822 avec strftime, il suffit de chercher la bonne chaine de formatage (man strftime depuis bash).
    Plus j'apprends, et plus je mesure mon ignorance (philou67430)
    Toute technologie suffisamment avancée est indiscernable d'un script Perl (Llama book)
    Partagez vos problèmes pour que l'on partage ensemble nos solutions : je ne réponds pas aux questions techniques par message privé
    Si c'est utile, say

  19. #19
    Candidat au Club
    Inscrit en
    Juin 2009
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 12
    Points : 2
    Points
    2
    Par défaut
    Bonjour Philou

    J'ai simplement utilisé :
    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
     
    # SOUCI ICI
    open (FIC6,"date -R|");
    my $datenv = join "", map { chomp; $_ } <FIC6>;
    close (FIC6);
    # FIN SOUCI ICI
     
    # my $smtp = Net::SMTP->new($mercure, Debug => 1, Timeout => 30);
    my $smtp = Net::SMTP->new($mercure);
     
                    $smtp->mail($depuis);
                    $smtp->to($vers);
     
                    $smtp->data();
     
                    $smtp->datasend("From: $depuis\n");
                    $smtp->datasend("To: $vers\n");
     
                   # SOUCI ICI
                    $smtp->datasend("Date: $datenv\n");
                   # FIN SOUCI ICI
    C'était cela qui manquait et me retournait l'erreur
    ...not RFC compliant.

  20. #20
    Candidat au Club
    Inscrit en
    Juin 2009
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 12
    Points : 2
    Points
    2
    Par défaut
    Ou pour être plus précis, c'était cela qu'il manquait....

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Envoi d'un message avec Javamail
    Par bilanabl dans le forum API standards et tierces
    Réponses: 1
    Dernier message: 05/11/2011, 11h09
  2. Envoi d'un message avec une image png INLINE
    Par moctey dans le forum C#
    Réponses: 0
    Dernier message: 28/07/2010, 14h39
  3. envoi d'un message avec SendObject
    Par jnmab dans le forum VBA Access
    Réponses: 4
    Dernier message: 09/07/2010, 15h27
  4. Erreur 502 unimplemented à l'envoi d'un message avec squirrelmail
    Par rane dans le forum Serveurs (Apache, IIS,...)
    Réponses: 4
    Dernier message: 18/09/2009, 16h10
  5. envoi automatique de messages avec Outlook
    Par kouki63 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 19/06/2007, 06h19

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