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 :

Probleme avec d'envoie mail avec 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 Probleme avec d'envoie mail avec Mime::Lite
    Il y a quelque temps j'ai developpe un site web...
    Le principe est simple l'utilisateur entre quelques donnees ainsi qu'un fichier par la suite j'ai un programme d'identification d'ARN qui roule et les resultats sont renvoyes a l'utilisateur grace a MIME::Lite les messages contiennent un resume des resultats ainsi qu'une piece jointe....

    Voici le code de ma sous-routine charge de faire l'envoie du mail :

    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    => 'xxx@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.tmp",
                            Filename    => "$filename.ali",
                            Disposition => 'attachment',
                            Encoding    => 'quoted-printable')
                            or die "Error adding result file : $!\n";
     
           $msg->send();
    }
    J'ai plusieur fois tester mon programme en m'envoyant les resultats sur differentes boites mail perso du type gmail.... j'ai meme teste de me l'envoyer sur des adresses plus complexes du genre... celle de mon boulot qui fini par @xxx.umontreal.ca .....
    Mes differents tests ont toujours fonctionne...
    Cela fait maintenant quelques semaines que j'ai mis le site web en ligne
    du coup diferrentes personnes ont pu tester le service....

    Seulement mon probleme est que de temps a autres l'envoie du mail echoue....


    Ils me sont retourne avec le message suivant :


    The original message was received at Fri, 16 Oct 2009 19:26:42 -0400
    from localhost.localdomain [127.0.0.1]

    ----- The following addresses had permanent fatal errors -----
    <xxx@xxxx.xx>
    (reason: 553 5.1.8 <xxxxx@xxxx.xxx.UMontreal.CA>... Domain of sender address xxxxx@xxxx.xxx.UMontreal.CA does not exist)

    ----- Transcript of session follows -----
    ... while talking to xxxxx.xxx.xx.xx.:
    >>> >>> MAIL From:<xxxxx@xxxx.xxx.UMontreal.CA> SIZE=95250
    <<< 553 5.1.8 <xxxxx@xxxx.xxx.UMontreal.CA>... Domain of sender address xxxxx@xxxx.xxx.UMontreal.CA does not exist
    501 5.6.0 Data format error



    Reporting-MTA: dns; xxxxxx.bcm.UMontreal.CA
    Received-From-MTA: DNS; localhost.localdomain
    Arrival-Date: Fri, 16 Oct 2009 19:26:42 -0400

    Final-Recipient: RFC822; xxxxx@xx.is
    Action: failed
    Status: 5.1.8
    Diagnostic-Code: SMTP; 553 5.1.8 <xxxxx@xxxx.xxx.UMontreal.CA>... Domain of sender address xxxxx@xxxx.xxx.UMontreal.CA does not exist
    Last-Attempt-Date: Fri, 16 Oct 2009 19:26:46 -0400
    Voila tous ca pour dire que je ne comprend pas pourquoi dans certains cas cela m'arrive et dans d autre non !!!! C'est tres genant car du coup certains utilisateurs ne recoivent pas leurs resultats, je leur les renvoies manuellement mais c'est tres genant....

    A savoir que j'ai fait le test de l'interface de l'interieur et de l'exterieur du boulot.... que pour une meme personne ca a fonctionne 3 fois et plante 1 fois ???
    Je nage en plein mystere y aurait il quelqu'un qui pourrait m'eclairer ?

    Merci de m'avoir lu jusque la,
    Loula

    PS : pas sur que le probleme viennent de perl ...

  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 : 498 771
    Points
    498 771
    Par défaut
    A mon avis, ce n'est pas un souci perl, mais de ton serveur de messagerie.

  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 tu confirme mon idee ... bien que cela ne m'arrange pas des masse que ce soit le serveur de messagerie ... Merci beaucoup pour la reponse.

  4. #4
    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
    Je reviens sur mon probleme....


    Donc comme dit precedemment le probleme doit venir du mailserveur .... ce qui ne me plait pas du tous car notre web serveur est tres compliquer et qu'il y a souvent des petits problemes

    Donc mon idee et de passer via le SMTP de gmail... a priori c'est possible .
    Donc apres quelques recherche et quelques test cela ne semble pas etre possible via MIME:Lite (arrete moi si je me trompe !!!).
    Et il semble etre necessaire d'utiliser les modules suivant :

    # Net_SSLeay.pm (Open SSL)
    # IO-Socket-SSL
    # Authen-SASL
    # Net-SMTP-SSL

    Donc voila dans la joie et la bonne humeur je suis entrain de me battre avec mon installation et avec mon admin systeme (euh ne le pernais pas a la lettre mais c est presque vrai...)

    Je reviendrais avec plus d'info quand j'aurais avance ... enfin reussi a faire une installation qui fonctionne..

    Merci pour l'aide.

  5. #5
    Membre actif

    Profil pro
    Inscrit en
    Août 2009
    Messages
    156
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 156
    Points : 211
    Points
    211
    Par défaut
    Et ton admin système peut pas plutôt faire marcher le serveur de mail pendant les horaires ouvrés sur l'application ?

    Sinon, plutôt que de partir vers un envoi via google,
    pourquoi ne pas gérer en interne un queue des mails (via une tite base mySQL ou autre si tu as déjà sous la main, limite sous forme de fichiers).
    Tu fait un daemon qui envoie les mails à part du site web du coup, avec plusieurs tentatives d'envoi, ou un ping du serveur avant envoi.

    Ton interactif reste toujorus aussi rapide, c'est juste que tes mails ne seront plus "temps réel".

  6. #6
    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
    Je me permet de revenir sur ce sujet, malgre sa vieillesse car j ai a nouveau un petit probleme.

    En effet j'ai finalement utiliser le serveur smtp de gmail, pour le mettre en oeuvre je me suis fortement inspirer du code 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
    35
    36
    37
    38
    39
    40
    41
     
    #!/usr/bin/perl -w
     
    use Net::SMTP::SSL;
     
    sub send_mail {
    my $to = $_[0];
    my $subject = $_[1];
    my $body = $_[2];
     
    my $from = 'johnny@gmail.com';
    my $password = 'MySecretGmailPassword';
     
    my $smtp;
     
    if (not $smtp = Net::SMTP::SSL->new('smtp.gmail.com',
                                Port => 465,
                                Debug => 1)) {
       die "Could not connect to server\n";
    }
     
    $smtp->auth($from, $password)
       || die "Authentication failed!\n";
     
    $smtp->mail($from . "\n");
    my @recepients = split(/,/, $to);
    foreach my $recp (@recepients) {
        $smtp->to($recp . "\n");
    }
    $smtp->data();
    $smtp->datasend("From: " . $from . "\n");
    $smtp->datasend("To: " . $to . "\n");
    $smtp->datasend("Subject: " . $subject . "\n");
    $smtp->datasend("\n");
    $smtp->datasend($body . "\n");
    $smtp->dataend();
    $smtp->quit;
    }
     
    # Send away!
    &send_mail('johnny@mywork.com', 'Server just blew up', 'Some more detail');
    Tous a parfaitement foctionner jusqu'a hier ou le programme m'a pour la premiere fois renvoyer le message suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Could not connect to server
    Bon oki facile je sais d'ou vien le probleme... Il viens exactement de la partie la du code :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if (not $smtp = Net::SMTP::SSL->new('smtp.gmail.com',
                                Port => 465,
                                Debug => 1)) {
       die "Could not connect to server\n";
    }
    ma question est la suivante comment faire pour que le programme ne "die" pas mais retante de se connecter au SMTP jusqu'a ce qu il y arrive, je veux vraiment que mon mail soit envoyer... Est ce que c'est une bonn idee de faire ca ou non ?

    Le truc c'est que le mail contient des resultats, et doit etre renvoyer au utilisateur du service web que je m'intient. Du coup c'est pas tres cool lorsque le programme d'envoyer du mail "die" alors que j'ai tous les resultats de dispo.

  7. #7
    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
    Essaye de mettre un timeout ou bien au lieu de faire un die, tu fais un test dans un while. Mais bon à un moment donné, faudra bien arrêter le programme si la connexion ne s'effectue pas car tu tourneras dans le vie à l'infini. Imagine le smtp de gmail indispo 1h ou plus, tu fais quoi ? Le plus important est que tu puisses avoir la trace quelque part que le mail n'a pas pu être envoyé.

Discussions similaires

  1. probleme envoi mail avec php mail
    Par phter dans le forum Langage
    Réponses: 0
    Dernier message: 31/05/2012, 16h08
  2. Envoi mail avec la fonction mail()
    Par ouldfella dans le forum Langage
    Réponses: 2
    Dernier message: 12/10/2011, 14h15
  3. [javamail] envoi mail avec message en pièce jointe
    Par k4eve dans le forum API standards et tierces
    Réponses: 5
    Dernier message: 16/11/2007, 11h17
  4. Envoi mail avec Outlook accusé de réception
    Par KapoueMan dans le forum Access
    Réponses: 2
    Dernier message: 14/04/2005, 10h41
  5. envoi mail avec piece jointe fichier excel
    Par flogreg dans le forum ASP
    Réponses: 12
    Dernier message: 20/12/2004, 16h02

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