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 :

mail php => envoie contenu page php


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Homme Profil pro
    apprenti ;-)
    Inscrit en
    Octobre 2016
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Orne (Basse Normandie)

    Informations professionnelles :
    Activité : apprenti ;-)

    Informations forums :
    Inscription : Octobre 2016
    Messages : 39
    Points : 17
    Points
    17
    Par défaut mail php => envoie contenu page php
    Bonjour tout le monde,

    Comme énoncé dans le titre, j'essai d'envoyer un mail via la fonction "mail" de php avec en corps le contenu d'une page php.

    Mon souci est que malgré mes divers essais, mon mail s'envoie bien avec le contenu de la page php sauf que celui-ci n'est pas interprété.

    Je reçois donc en corps de mail le code brut de la page..

    Voici le code
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    $message1= file_get_contents("../index.php");
     
     
    	if (mail($destinataire, $objet, $message, $headers)) // Envoi du message
    	{
    	    echo 'Votre message a bien été envoyé ';
    	}
    	else // Non envoyé
    	{
    	    echo "Votre message n'a pas pu être envoyé";
    	}
     
     }

    J'ai aussi testé avec un include et un iframe mais je n'ai pas réussi à obtenir le résultat attendu...

    Avez-vous une idée?

    Merci a vous

  2. #2
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 468
    Points : 5 826
    Points
    5 826
    Billets dans le blog
    1
    Par défaut
    Bonjour,

    d'abord, il y a ambiguïté entre $message et $message1. Ensuite, tu ne donnes pas $headers. Enfin, je te conseille de regarder https://stephaneey.developpez.com/tu...php/phpmailer/

  3. #3
    Membre à l'essai
    Homme Profil pro
    apprenti ;-)
    Inscrit en
    Octobre 2016
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Orne (Basse Normandie)

    Informations professionnelles :
    Activité : apprenti ;-)

    Informations forums :
    Inscription : Octobre 2016
    Messages : 39
    Points : 17
    Points
    17
    Par défaut
    Bonjour, merci pour ta réponse

    Oui pour $message, en effet il ne faut pas prendre en compte le $1 ..il est resté suite a de multiple test.

    Je n'ai pas mis le header car je ne pensais pas que ce soit utile...

    Je vais allez voir ton lien

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $message = file_get_contents("../index.php");
    file_get_contents() renvoie le contenu "brut" du fichier.
    Évidemment le code PHP n'est pas interprété.

    Il faut donc bien faire un include, mais pas n'importe comment.
    Il faut utiliser le buffer ("tampon") : ob_start() / ob_get_clean().

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <?php 
    // ------------
    // get the HTML
        ob_start();
        include ("../index.php");
    // CONTENU HTML du message
        $message = ob_get_clean();

  5. #5
    Membre à l'essai
    Homme Profil pro
    apprenti ;-)
    Inscrit en
    Octobre 2016
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Orne (Basse Normandie)

    Informations professionnelles :
    Activité : apprenti ;-)

    Informations forums :
    Inscription : Octobre 2016
    Messages : 39
    Points : 17
    Points
    17
    Par défaut
    Après lecture de ton lien et plusieurs essais, j'avoue que je m'y perd un peux...

    Ayant trouvé plusieurs exemples sur le net, j'arrive maintenant a envoyer mon mail en html et celui-ci est en partis "interprété".

    Je dit bien en partis car du coup, le background ainsi que les "blocs" s'affichent mais aucun contenu n'est chargé... Pad de titre, paragraphe ni de photos...

    Voici le 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
     
    $sujet = "Test";
        $delimitation = uniqid();
        $rn = "\n";
        $headers = 'From: '.$from.$rn;
        $headers .= 'Reply-to: '.$replyTo.$rn;
        $headers .= 'Content-Type: multipart/alternative;'.$rn.' boundary="'.$delimitation.'"'.$rn.$rn;
        $message .= $rn.$rn."--".$delimitation.$rn;
        $message .= "Content-Type: text/html; charset=utf-8".$rn;
        $message .= file_get_contents("index.php");
     
    	if (mail($destinataire, $sujet, $message, $headers)) // Envoi du message
    	{
    	    echo 'Votre message a bien été envoyé ';
    	}
    	else // Non envoyé
    	{
    	    echo "Votre message n'a pas pu être envoyé";
    	}
    Je tiens a préciser que lorsque je fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $test = file_get_contents("index.php");
    echo $test;
    La page index.php est correctement chargée.

  6. #6
    Membre à l'essai
    Homme Profil pro
    apprenti ;-)
    Inscrit en
    Octobre 2016
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Orne (Basse Normandie)

    Informations professionnelles :
    Activité : apprenti ;-)

    Informations forums :
    Inscription : Octobre 2016
    Messages : 39
    Points : 17
    Points
    17
    Par défaut
    Bonjour Jreaux62 !! Merci d'avoir pris le temp de me répondre.

    J'ai essayé avec ton code et ça fonctionne mieux mais je n'ai pas encore tout..

    J'ai maintenant les balises html qui s'affichent ( <p> <h1> ) mais les images incluent dans la page ne s'affichent toujours pas...

    Voici le 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
     
     $from = "###";
        $replyTo = "";
        $to = "";
     
        $sujet = "Test";
        $delimitation = uniqid();
        $rn = "\n";
     
        $headers = 'From: '.$from.$rn;
        $headers .= 'Reply-to: '.$replyTo.$rn;
        $headers .= 'Content-Type: multipart/alternative;'.$rn.' boundary="'.$delimitation.'"'.$rn.$rn;
        $message .= $rn.$rn."--".$delimitation.$rn;
        $message .= "Content-Type: text/html; charset=utf-8".$rn;
        $message .= "Content-Transfer-Encoding: 8bit;".$rn.$rn;
        // ------------
    // get the HTML
        ob_start();
        include ("../index.php");
    // CONTENU HTML du message
        $message .= ob_get_clean();
     
    	if (mail($destinataire, $sujet, $message, $headers)) // Envoi du message
    	{
    	    echo 'Votre message a bien été envoyé ';
    	}
    	else // Non envoyé
    	{
    	    echo "Votre message n'a pas pu être envoyé";
    	}
    J'ai rajouté un point avant le signe égale
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $message .= ob_get_clean();
    Après je ne sais pas si c'est la bonne intégration...

    J'avoue que sur ce coup la, je ne pige pas tout sur le fonctionnement de mail...

  7. #7
    Invité
    Invité(e)
    Par défaut
    "../index.php" : ce n'est pas dans le même répertoire.

    Donc, si tu as des liens relatifs dans index.php (comme le src des IMG, fichiers CSS,...), ils ne fonctionneront pas.


    Il faut des chemins absolus.
    Dernière modification par Invité ; 17/09/2019 à 13h23.

  8. #8
    Membre à l'essai
    Homme Profil pro
    apprenti ;-)
    Inscrit en
    Octobre 2016
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Orne (Basse Normandie)

    Informations professionnelles :
    Activité : apprenti ;-)

    Informations forums :
    Inscription : Octobre 2016
    Messages : 39
    Points : 17
    Points
    17
    Par défaut
    jreaux62,

    Ma page Index.php contient des chemins absolus pour mes images.

    J'ai même essayé de mettre mon "mail.php" dans le même répertoire que index.php et cela ne change rien.

    Ce que je ne comprend pas c'est que lorsque je fais un "include" normal dans ma page, mon index s'affiche correctement...

  9. #9
    Membre à l'essai
    Homme Profil pro
    apprenti ;-)
    Inscrit en
    Octobre 2016
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Orne (Basse Normandie)

    Informations professionnelles :
    Activité : apprenti ;-)

    Informations forums :
    Inscription : Octobre 2016
    Messages : 39
    Points : 17
    Points
    17
    Par défaut
    Bonjour tout le monde,

    Aujourd'hui j'ai testé d'envoyer simplement une image en tant que corp de mail et cela ne fonctionne pas non plus...

    Voici le 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
     
    $expediteur = '##';
    $copie = '##';
    $copie_cachee = '';
    $sujet = 'Formulaire de contact'; // Objet du message
    $headers  = 'MIME-Version: 1.0' . "\n"; // Version MIME
    $headers .= 'Content-type: text/html; charset=iso-8859-1"'."n";
    $headers .= 'Reply-To: '.$expediteur."\n"; // Mail de reponse
    $headers .= 'From: "Nom_de_expediteur"<'.$expediteur.'>'."\n"; // Expediteur
    $headers .= 'Delivered-to: '.$destinataire."\n"; // Destinataire
    $headers .= 'Cc: '.$copie."\n"; // Copie Cc
    $headers .= 'Bcc: '.$copie_cachee."\n\n"; // Copie cachée Bcc        
     
    $message = '<img src="/setup/newsletter/template/template1/images.png" width="407" height="100" alt="" style="display:block; border:0; margin:0;">';
    Est ce que vous auriez un bout de code fonctionnel pour le simple envoie d'une image?

  10. #10
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Normal, l'image a une URL relative.
    Il faut l'URL absolue.

  11. #11
    Membre à l'essai
    Homme Profil pro
    apprenti ;-)
    Inscrit en
    Octobre 2016
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Orne (Basse Normandie)

    Informations professionnelles :
    Activité : apprenti ;-)

    Informations forums :
    Inscription : Octobre 2016
    Messages : 39
    Points : 17
    Points
    17
    Par défaut
    jreaux62

    Merci pour ta réponse,

    Donc cela veut dire que je n'ai pas la bonne définition d'une URL absolue...

    Je pensais que relative était ../image.png

    et que absolue était setup/newsletter/template/template1/images.png... (sachant que /setup est a la racine de /web).

    Je vais faire un tour sur google...

  12. #12
    Membre à l'essai
    Homme Profil pro
    apprenti ;-)
    Inscrit en
    Octobre 2016
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Orne (Basse Normandie)

    Informations professionnelles :
    Activité : apprenti ;-)

    Informations forums :
    Inscription : Octobre 2016
    Messages : 39
    Points : 17
    Points
    17
    Par défaut
    Bon...aprés ce petit tour sur google j'ai pigé pour les Urls..

    Donc j'ai testé ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    $expediteur = '##';
    $copie = '##';
    $copie_cachee = '';
    $sujet = 'Formulaire de contact'; // Objet du message
    $headers  = 'MIME-Version: 1.0' . "\n"; // Version MIME
    $headers .= 'Content-type: text/html; charset=iso-8859-1'."n";
    $headers .= 'Reply-To: '.$expediteur."\n"; // Mail de reponse
    $headers .= 'From: "Nom_de_expediteur"<'.$expediteur.'>'."\n"; // Expediteur
    $headers .= 'Delivered-to: '.$destinataire."\n"; // Destinataire
    $headers .= 'Cc: '.$copie."\n"; // Copie Cc
    $headers .= 'Bcc: '.$copie_cachee."\n\n"; // Copie cachée Bcc        
     
    $message = '<img src="http://192.168.10.XX/setup/newsletter/template/template1/images/azea.png" width="407" height="100" alt="" style="display:block; border:0; margin:0;">';
    J'ai aussi testé sans le http mais cela ne fonctionne pas non plus...

    Je precise que quand je fais "http://192.168.10.XX/setup/newsletter/template/template1/images/azea.png" dans mon explorateur web , la photo s'affiche bien...

  13. #13
    Invité
    Invité(e)
    Par défaut
    L'image que tu envoies par email doit pouvoir s'afficher dans la messagerie, donc EN DEHORS de ton site.

    1- Il faut donc que sont URL contienne l'adresse du site !
    Donc : "http.........."

    2- tu ne peux pas afficher une image dont l'adresse est celle de TON ordinateur !

  14. #14
    Membre à l'essai
    Homme Profil pro
    apprenti ;-)
    Inscrit en
    Octobre 2016
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Orne (Basse Normandie)

    Informations professionnelles :
    Activité : apprenti ;-)

    Informations forums :
    Inscription : Octobre 2016
    Messages : 39
    Points : 17
    Points
    17
    Par défaut
    Ok j'ai donc testé ceci :

    (c'est un lien vers une image au hasard sur le net)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    $expediteur = '##';
    $copie = '##';
    $copie_cachee = '';
    $sujet = 'Formulaire de contact'; // Objet du message
    $headers  = 'MIME-Version: 1.0' . "\n"; // Version MIME
    $headers .= 'Content-type: text/html; charset=iso-8859-1'."n";
    $headers .= 'Reply-To: '.$expediteur."\n"; // Mail de reponse
    $headers .= 'From: "Nom_de_expediteur"<'.$expediteur.'>'."\n"; // Expediteur
    $headers .= 'Delivered-to: '.$destinataire."\n"; // Destinataire
    $headers .= 'Cc: '.$copie."\n"; // Copie Cc
    $headers .= 'Bcc: '.$copie_cachee."\n\n"; // Copie cachée Bcc        
     
    $message = '<img src="https://helpx.adobe.com/content/dam/help/en/stock/how-to/visual-reverse-image-search/jcr_content/main-pars/image/visual-reverse-image-search-v2_intro.jpg";>';
    Et en effet, je reçois bien l'image par mail !!

    Si j'ai bien compris, lorsqu'on envoie une image par mail en faite on envoie rien, mise a part un lien qui permet de l'afficher...(Ting ! une ampoule au dessus de ma tête ^^)

    Existe-t-il un moyen d'afficher l'image sans être obligé de mettre celle-ci en ligne? Comme par exemple vraiment l'envoyer pour qu'elle puisse s'afficher dans le mail depuis une Url relative propre a la messagerie? Une sorte de mémoire "tampon"?

  15. #15
    Invité
    Invité(e)
    Par défaut
    C'est "simple" : "pièce jointe".

  16. #16
    Membre à l'essai
    Homme Profil pro
    apprenti ;-)
    Inscrit en
    Octobre 2016
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Orne (Basse Normandie)

    Informations professionnelles :
    Activité : apprenti ;-)

    Informations forums :
    Inscription : Octobre 2016
    Messages : 39
    Points : 17
    Points
    17
    Par défaut
    jreaux62 c'est simple... lol!

    Pour expliquer mon problème de base:

    J'ai créé une petite application web qui permet de modifier une page html (Titre paragraphes photos ect..) en "mode graphique".. Suite à ça, l'application se connecte à une DB MariaDb afin de récupérer tous les emails des abonnés Newsletter et envoie le mail.

    Mon soucis est que visiblement pour que ce template (qui contient les photos) s'affiche correctement dans mon mail, il faudra que les photos soient disponible en ligne.

    Le truc c'est que si je fais cela, c'est l'entièreté de l'application qui va se retrouver aussi en ligne...Bien que protégé par un Login/Mdp , je n'ai pas très envie que tout soit en ligne..

    Si j'envoie les images en pièces jointe, celles-ci seront disponible au téléchargement mais ne seront pas affichées dans la page de newsletter...

    Peux-t-on envoyer des pièces jointe et s'en servir comme source dans un email?

  17. #17
    Membre à l'essai
    Homme Profil pro
    apprenti ;-)
    Inscrit en
    Octobre 2016
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Orne (Basse Normandie)

    Informations professionnelles :
    Activité : apprenti ;-)

    Informations forums :
    Inscription : Octobre 2016
    Messages : 39
    Points : 17
    Points
    17
    Par défaut
    Bonsoir tout le monde,

    Me revoilà (Il lache pas le gars!! )

    J'ai continué mes recherches pour l'affichage des images et visiblement il existe une autre solution pour les afficher sans utiliser les Urls absolue.

    J'ai trouvé ceci:

    Il faut définir un nom cid a l'image
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $mail -> AddEmbeddedImage('../images/mon_image.jpg','image1');
    Et dans le corp du mail appeler l'image comme ceci:
    Code HTML : Sélectionner tout - Visualiser dans une fenêtre à part
    <img src="cid:image1" width="407" height="100" alt="" style="display:block; border:0; margin:0;">

    Ma seul problématique est que je n'arrive pas a intégrer ce code a ma page...

    J'ai essayé en mettant $message à la place de $mail...
    Et aussi en mettant .= à la place de -> mais cela ne fonctionne pas...

    Merci à vous

  18. #18
    Membre à l'essai
    Homme Profil pro
    apprenti ;-)
    Inscrit en
    Octobre 2016
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Orne (Basse Normandie)

    Informations professionnelles :
    Activité : apprenti ;-)

    Informations forums :
    Inscription : Octobre 2016
    Messages : 39
    Points : 17
    Points
    17

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

Discussions similaires

  1. [Mail] Spam et envoi e-mail avec PHP
    Par tomguiss dans le forum Langage
    Réponses: 36
    Dernier message: 21/12/2006, 14h06
  2. [Mail] envoi de mail php
    Par nicordi dans le forum Langage
    Réponses: 16
    Dernier message: 31/10/2006, 00h00
  3. [Mail] PHP et envoi d'email avec PHPmailer
    Par dolf13 dans le forum Langage
    Réponses: 6
    Dernier message: 14/07/2006, 00h51
  4. [Mail] Envoie mail PHP
    Par oldscrout dans le forum Langage
    Réponses: 4
    Dernier message: 29/03/2006, 14h55
  5. [Mail] Comment créer son premier page en PHP
    Par gymac dans le forum Langage
    Réponses: 3
    Dernier message: 07/09/2005, 22h15

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