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 PHP Discussion :

Tester envoi d'e-mail [PHP 4]


Sujet :

Langage PHP

  1. #1
    Membre régulier Avatar de dany13
    Inscrit en
    Mai 2004
    Messages
    168
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 168
    Points : 100
    Points
    100
    Par défaut Tester envoi d'e-mail
    Bonjour,

    j'ai un soucis avec un script PHP qui est sensé envoyer un mail mais je ne reçois rien et, étant novice dans ce langage, je ne sais pas à quel endroit intervenir pour que cela fonctionne.

    Voila la config :
    Je suis en local sur mon poste : Vista
    J'ai les librairies php à cet endroit : C:\Inetpub\php-4.3.11-Win32\
    Et j'execute le script php en ligne de commande de cette manière :
    C:\Inetpub\php-4.3.11-Win32\php.exe fichier_script.php
    Le traitement de mon fichier ne pose pas de soucis mais c'est au moment de l'envoie ou je ne reçois rien au final.

    Mon code :
    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
     
    $to= dan@domaine.fr
    $subject = "Retour de commande";
    $message = '
    <html>
    <head>
    <title>
    '.$subject.'
    </title>
    <style>
    BODY{font-family: sans-serif;font-size: 11}
    </style>
    </head>
    <body>
    <table>
    <tr>
        <td><b>Details </b>	</td>
    </tr>
    <tr>
        <td style="border: 1 solid #000000" bgcolor="#FFFFCC">
         hsdd sdhf sdh sdjg sdgf sdkfgsdkgfks
        </td>
    </tr>
    </table>
    </body>
    </html>
    								';
    $headers  = "MIME-Version: 1.0 \n";
    $headers .= "Content-Transfer-Encoding: 8bit \n";
    $headers .= "Content-type: text/html; charset=utf-8 \n";
    $headers .= "From: dan_bis@domaine.fr  \n";
    $headers .= "Disposition-Notification-To: dan@domaine.fr  \n"; // accuse de reception
     
    //Envoi d'un email à l'administrateur
    $to	= dan@domaine.fr;
    echo "send mail to" . $to;
    $verif_envoi_mail = TRUE;
    $verif_envoi_mail = @mail ($to,$subject,$message,$headers);
     
    if ($verif_envoi_mail === FALSE) echo " ### Verification Envoi du Mail=$verif_envoi_mail - Erreur envoi mail <br> \n";
    else echo " *** Verification Envoi du Mail=$verif_envoi_mail - Mail envoy&eacute; avec succ&egrave;s de $to vers dan_bis@domaine.fr <br> avec comme sujet: $subject \n"; 
    		}
    Quand j'execute mon script, en ligne de commande dans l'invite Dos, il me met

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Send mail to dan@domaine.fr
    ### Verification Envoi du Mail= - Erreur envoi mail
    J'ai jeté un coup d'oeil dans mon php.ini et le SMTP est bien configuré avec le bon fornisseur.

    Qu'est ce qui ferait que les mails ne partent pas? Quelqu'un a une idée?

    Merci infiniment de vos lumières...je nage...enfin je coule là!
    Carpe Diem : Profitez du moment présent
    La connaissance non partagée n'a pas vraiment son utilité

  2. #2
    Membre expérimenté Avatar de riete
    Homme Profil pro
    DevWeb - Oléiculteur
    Inscrit en
    Avril 2006
    Messages
    1 193
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : DevWeb - Oléiculteur
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 193
    Points : 1 414
    Points
    1 414
    Par défaut
    Voici ce que je peux te dire.

    1/ A moins que ce soit un copier/coller intempestif, il n'y a pas de balise pour indiquer que tu utilise php 2/ L'affectation de ta variable $message n'est jamais clause. Il manque un ';
    3/ il y a une accolade qui se ferme sans jamais s'être ouverte ?
    ----
    L'avenir appartient à ceux dont les salariés se lèvent tôt.

  3. #3
    Membre régulier Avatar de dany13
    Inscrit en
    Mai 2004
    Messages
    168
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 168
    Points : 100
    Points
    100
    Par défaut
    Merci pour ces éléments de réponse.

    Après avoir isolé chaque "partie" de traitement que fait mon script, il s'avère, sans doute, que l'envoie plante parce que, dans le corps de mon mail, je rajoute du contenu de 2 fichiers en utilisant la fonction "file_get_contents".
    Le problème est qu'il arrive à en lire 1 et l'intégrer a mon mail, que j'ai fini par recevoir après coup, ouf!

    Mais j'ai un soucis pour le second.

    Alors voila mes questions :
    - Qu'est ce qui peut empêcher la fonction file_get_contents de lire le contenu d'un fichier?
    - Comment puis je tester la valeur de retour de cette fonction?

    Merci par avance pour vos réponses
    @++
    Carpe Diem : Profitez du moment présent
    La connaissance non partagée n'a pas vraiment son utilité

  4. #4
    Membre expérimenté Avatar de riete
    Homme Profil pro
    DevWeb - Oléiculteur
    Inscrit en
    Avril 2006
    Messages
    1 193
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : DevWeb - Oléiculteur
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 193
    Points : 1 414
    Points
    1 414
    Par défaut
    Pour tester la valeur de retour le plus simple est:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if($s = file_get_contents('tonfichier.txt')) echo $s;
    else echo "Erreur !!";
    Pour les erreurs possible les causes sont multiples et les solutions aussi ->file_get_contents
    @+
    ----
    L'avenir appartient à ceux dont les salariés se lèvent tôt.

  5. #5
    Membre régulier Avatar de dany13
    Inscrit en
    Mai 2004
    Messages
    168
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 168
    Points : 100
    Points
    100
    Par défaut
    Merci pour ta réponse riete.
    J'arrive effectivement à lire dans le fichier grace à ton code de test. C'est déjà un grand pas!!
    Cependant, chose bizarre!! Quand je souhaite inclure le contenu de mon fichier dans le corps du mail, il me pète une erreur...et je n'arrive pas à l'identifier!! Cette fonction file_get_contents ne m'a pas l'air très stable, si?...

    Voilà mon code :
    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
     
    $ContenuLog = @file_get_contents($LOG_FICHIER);
    $ContenuParse = @file_get_contents($LOG_PARSE);
    echo "ContenuLog *".file_get_contents($LOG_NAME)."* ";
     
    $to = "dan@domaine.fr";
    $subject = "[TEST] Contenu de mon mail";
    $message = "Le fichier test est généré. <BR>";
    $message .= "Contenu fichier log : <BR>";
    $message .= "<b>".file_get_contents($LOG_FICHIER)."</b>";
    $message .= "Contenu fichier Parse : <BR>";
    $message   .= "<b>".$ContenuParse."</b>";
    $headers  = "MIME-Version: 1.0 \n";
    $headers .= "Content-Transfer-Encoding: 8bit \n";
    $headers .= "Content-type: text/html; charset=utf-8 \n";
    $headers .= "From: danBis@domaine.fr  \n";
    $headers .= "Disposition-Notification-To: dan@domaine.fr  \n"; // accuse de reception
     
    echo "Envoie un mail a : ". $to;
    $verif_envoi_mail = TRUE;
    $verif_envoi_mail = mail($to,$subject,$message,$headers);
     
    if ($verif_envoi_mail == FALSE) echo " ### Verification Envoi du Mail :".$verif_envoi_mail." - Erreur envoi mail <br> \n";
    else echo " *** Verification Envoi du Mail:".$verif_envoi_mail." - Mail envoy&eacute; avec succ&egrave;s de".$to." vers danBis@domaine.fr <br> avec comme sujet:".$subject." \n";
    Le fichier de log en question ne contient pas de caratère bizarre ou autre et j'arrive à l'afficher dans l'invit dos avec ce code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo "ContenuLog *".file_get_contents($LOG_NAME)."* ";
    Cependant, dans le corps du mail, rien à faire...Le mail part bien si je mets en commentaire cette portion de code, sinon le mail ne part pas!!! :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $message .= "<b>".file_get_contents($LOG_FICHIER)."</b>";
    Pourquoi je n'ai pas de soucis avec l'autre fichier et des choses bizarre avec celui là? Qu'est ce qui pourrait expliquer cela?

    Merci encore de votre aide!
    @+
    Carpe Diem : Profitez du moment présent
    La connaissance non partagée n'a pas vraiment son utilité

  6. #6
    Membre régulier Avatar de dany13
    Inscrit en
    Mai 2004
    Messages
    168
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 168
    Points : 100
    Points
    100
    Par défaut
    Après recherche et isolation des points à problème, j'ai trouvé une piste!
    Si mon fichier log ne contient pas de texte avec des accents, ça fonctionne mais si j'ai des caractères accentués dans le contenu de mon fichier, ça ne passe plus...
    Alors comment puis-je integrer le contenu de mon fichier dans le corps du mail sans que cela me fasse une erreur?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $message .= "<b>".file_get_contents($LOG_FICHIER)."</b>"
    Merci infiniment
    @+
    Carpe Diem : Profitez du moment présent
    La connaissance non partagée n'a pas vraiment son utilité

  7. #7
    Membre expérimenté Avatar de riete
    Homme Profil pro
    DevWeb - Oléiculteur
    Inscrit en
    Avril 2006
    Messages
    1 193
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : DevWeb - Oléiculteur
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 193
    Points : 1 414
    Points
    1 414
    Par défaut
    Content de pouvoir t'apporter un peu d'aide.

    As tu regarder du coté de l'encodage des caractères de ton fichier de log. J'aurais tendance à penser que le problème vienne de là.
    A mon avis et ceci n'engage que moi, car je n'ai jamais été confronté à ce genre de problème. Tu pourrais peut être faire un pré-traitement de ton fichier avant de l'expédier.
    Je vois 2 solutions:

    - Remplacer les caractères spéciaux par des caractères ASCII.
    - Changer d'encodage passé par exemple en UTF8, s'il ne l'est pas déjà !

    En effet regarde l'entête de ton message.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $headers  = "MIME-Version: 1.0 \n";
    $headers .= "Content-Transfer-Encoding: 8bit \n";
    $headers .= "Content-type: text/html; charset=utf-8 \n";
    Peut être y a t il autre chose à faire pour l'encodage MIME ensuite ?
    ----
    L'avenir appartient à ceux dont les salariés se lèvent tôt.

  8. #8
    Membre régulier Avatar de dany13
    Inscrit en
    Mai 2004
    Messages
    168
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 168
    Points : 100
    Points
    100
    Par défaut
    Riete,

    merci pour ta réponse, j'ai effectivement cherché l'endroit où le fichier log est construit et j'ai remplacé les \n par des \r\n car je me suis aperçue dans mes multi tests qu'il y avait un caractère invisible dans le fichier log généré et en supprimant ce caractère, le mail passait!!

    Tout ça m'aura pris du temps mais n'est ce pas en rencontrant ce genre de chose qu'on les évite plus tard?

    J'espère que mon soucis servira pour d'autres
    @bientôt
    Carpe Diem : Profitez du moment présent
    La connaissance non partagée n'a pas vraiment son utilité

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

Discussions similaires

  1. tester envoi mail pour un site local
    Par bouchra19 dans le forum Général Conception Web
    Réponses: 2
    Dernier message: 30/05/2012, 11h53
  2. Tester un envoi d'e-mail avec un formulaire
    Par Bobybx dans le forum Langage
    Réponses: 4
    Dernier message: 08/09/2009, 17h32
  3. [EasyPHP] Tester l'envoi d'e-mails sur son PC avec EasyPHP
    Par khalid_kha dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 8
    Dernier message: 03/08/2007, 17h36
  4. [TIdSMTP] Envoi d'un mail avec authentification ?
    Par BACUS dans le forum C++Builder
    Réponses: 4
    Dernier message: 16/06/2004, 16h18
  5. Envoi d'un mail en VBA: outlook ne se lance pas
    Par Hannibal dans le forum VBA Access
    Réponses: 4
    Dernier message: 01/06/2003, 15h24

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