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] - Envoyer une page ?


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    17
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 17
    Points : 18
    Points
    18
    Par défaut [Mail] - Envoyer une page ?
    Bonjour à tous,

    J'aimerais savoir s'il était possible d'envoyer une page avec la fonction mail. Je m'explique : il est possible, en déclarant dans le header, d'ajouter un Mime type et un encodage, afin d'activer la prise en compte des balises HTML/XHTML/CSS, etc.

    J'aimerais donc pour mon site mettre en place un envoie de mail, pour diverses application (rappels, activations de comptes, etc), mais mis en forme avec les pages de mon site.

    Mais, avec la fonction mail, on est "obligé" de découper notre page et de l'incure dans une seule variable, puisqu'on l'utilise ainsi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $subject = "T'as vu comme t'es beau ?" ;
    $msg = "Titre test<br /><br />Voici un test de mail !" ;
    $header = "From:plop@plopcom\n" ;
    $header .= "MIME-version: 1.0\n" ;
    $header .= "Content-type: text/html; charset= iso-8859-1\n" ;
    mail($dest, $subject, $msg, $header);
    Mais je me vois très mal parser toute ma page pour la faire tenir dans une variable, surtout qu'elle n'aura plus aucun dynamisme (include entre autre).

    Bref, ya-t-il un moyen de carrément inclure la page lors de l'envoie du mail, plutot que de passer une variable ?

    Par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    mail($dest, $subject, "page.php", $header);
    mail($dest, $subject, include("page.php"), $header);
    Je ne les ai pas testé, et je doute que ces exemples marchent, c'est pourquoi je cherche une solution fiable à mon problème :p

    Merci d'avance !

  2. #2
    Membre expérimenté
    Avatar de Anduriel
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Février 2004
    Messages
    2 290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration

    Informations forums :
    Inscription : Février 2004
    Messages : 2 290
    Points : 1 500
    Points
    1 500
    Par défaut
    Tu peux je pense (j'ai jamais essayé) lire tout le contenu de ta page avec fopen(), donc tu auras tout le code normalement que tu mets dans la variable $content et tu envoies $content non?

    Genre:
    une-page.php
    echo "Voila un test";
    $i = 1;
    echo $i;
    Ton fichier d'envois:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    $hd = fopen('une-page.php', 'r');
    $content = fread($hd, filesize('une-page.php');
    fclose($hd);
     
    $subject = "T'as vu comme t'es beau ?" ; 
    $msg = "Titre test<br /><br />Voici un test de mail !" ; 
    $header = "From:plop@plopcom\n" ; 
    $header .= "MIME-version: 1.0\n" ; 
    $header .= "Content-type: text/html; charset= iso-8859-1\n" ; 
    mail($dest, $subject, $content, $header);

  3. #3
    Expert confirmé
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    Détails du profil
    Informations personnelles :
    Âge : 48

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Points : 5 011
    Points
    5 011
    Par défaut
    peut etre qu en excutant ta page en ligne de commande tu peux recupérer la réponse ?

    ou en l'ouvrant par socket ou avec des headers ?

  4. #4
    Expert confirmé
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    Détails du profil
    Informations personnelles :
    Âge : 48

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Points : 5 011
    Points
    5 011
    Par défaut
    Anduriel, il voudrais du code php "évalué" pas le source

  5. #5
    Membre expérimenté
    Avatar de Anduriel
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Février 2004
    Messages
    2 290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration

    Informations forums :
    Inscription : Février 2004
    Messages : 2 290
    Points : 1 500
    Points
    1 500
    Par défaut
    Euh mais il n'est pas éxecuté quand il arrive?
    Non c'est vrai c'est bête, mais sinon il peut non pas ouvrir le fichier directement, mais la page php déjà exécutée sur le serveur par fopen('http://site.fr/page.php', 'r') ?

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    17
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 17
    Points : 18
    Points
    18
    Par défaut
    Ouaip, le but ca serait de formater une page PHP en fonction de certaines paramètres. Bref le serveur s'occupe de me la formater, et je la récupère en XHTML (comme normalement), sauf que là je voudrais envoyer le résultat par mail, dans la variable $msg.

    Donc est-ce que le fopen va executer le code ? J'en doute, je pense qu'il va me retourner la source.

    @siddh : header, qu'entends tu par là ? Pour les sockets, je connais pas :p

  7. #7
    Membre expérimenté
    Avatar de Anduriel
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Février 2004
    Messages
    2 290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration

    Informations forums :
    Inscription : Février 2004
    Messages : 2 290
    Points : 1 500
    Points
    1 500
    Par défaut
    En ouvrant la page du web ça doit être bon. J'avais un code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    $file = "unepage.aspx?var=".$_GET['gateway']."&var2=".$_GET['pseudo']."";
    	$open = @fopen($file, "r");
    		if (!$open) {
    			header("Content-type: image/gif");
    			$im = imagecreatefromgif('erreur.gif');
    			imagegif($im);
    			imagedestroy($im);		
    			exit;
    		}
    qui ouvrait la page avec le script déjà exécuté et ça fonctionnait.

  8. #8
    Expert confirmé
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    Détails du profil
    Informations personnelles :
    Âge : 48

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Points : 5 011
    Points
    5 011
    Par défaut
    DrySs, a mon avis essayes de voir par l execution en ligne de commande.

    EDIT

    essayes le fopen puisque ca marche apparement !
    bien joué Anduriel, j'avais pas pensé a passer par l'url.
    Mais il faut que le urlopen soit a true

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    17
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 17
    Points : 18
    Points
    18
    Par défaut
    J'ai essayé avec une bufferisation :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    ob_start();
    include("/medias/file_portal/email.php");
    $msg = ob_get_contents;
    ob_end_flush();
    $subject = "Activation de votre compte";
    $header = "From:no-reply@plop.com\n";
    $header .= "MIME-version: 1.0\n";
    $header .= "Content-type: text/html; charset= iso-8859-1\n";
    mail($email, $subject, $msg, $header);
    Et dans ma page email.php :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <?php echo "lololol".$id."lololol"; ?>
    Mais ca m'affiche le contenu de ma page email.php sur le site, au lieu de me mettre son contenu dans ma variable, et ca m'envoie en mail "ob_get_contents;", comme une simple chaine de char...

    Ptdr

    Pour le fopen, comment le mettre en place dans mon cas ? J'ai du mal a suivre

  10. #10
    Membre actif Avatar de FrankOVD
    Homme Profil pro
    Directeur des systèmes d'information
    Inscrit en
    Juin 2005
    Messages
    438
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Directeur des systèmes d'information
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Juin 2005
    Messages : 438
    Points : 254
    Points
    254
    Par défaut
    Peut-être que tu pourrais essayer de travailler avec la class.phpmailer. Avec le protocule smtp par exemple, ton code HTML sera interprété correctemant par tous els clients de courriel incluant Outlook Express et Hotmail

  11. #11
    Expert confirmé
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    Détails du profil
    Informations personnelles :
    Âge : 48

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Points : 5 011
    Points
    5 011
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    $msg = file_get_contents("http://www.tonsite.com/tapage.php");
    $subject = "Activation de votre compte";
    $header = "From:no-reply@plop.com\n";
    $header .= "MIME-version: 1.0\n";
    $header .= "Content-type: text/html; charset= iso-8859-1\n";
    mail($email, $subject, $msg, $header);
    :

  12. #12
    Membre éprouvé
    Inscrit en
    Juillet 2004
    Messages
    1 027
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 1 027
    Points : 1 164
    Points
    1 164
    Par défaut
    DrySs,

    Pour la bufferisation il ne faut pas mettre
    $msg = ob_get_contents;

    mais $msg = ob_get_contents();

    Sinon pour info la fonction ob_end_flush() envoie les données sur la sortie standard(= Navigateur web).

    Si tu n' à pas besoin d'envoyer une réponse au navigateur utilise
    ob_end_clean(); à la place de ob_end_flush();.
    Cette fonction vide le buffer, donc il n'y aura plus rien à envoyer.

    Sinon j'ai remarquer qu'il y 'avait un équivalent de ob_get_contents(); qui est ob_get_flush();.

    Je n'ai pas lu de différence notoire entre les deux... mais on ne sait jamais si ton script ne fonctionne toujours pas, se sera à essayer.


    voila, tout est pompé de http://fr.php.net/ob_start

    Bye

  13. #13
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    17
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 17
    Points : 18
    Points
    18
    Par défaut
    Ca marche à merveille, merci beaucoup ePoX

    Merci aussi à siddh et Anduriel pour votre aide

    Je met ca en Résolu !

    Pour ceux que ça intéresse, voici mon code final :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    ob_start();
    include("/medias/file_portal/email.php");
    $msg = ob_get_contents();
    ob_end_clean();
    $subject = "Activation de votre compte";
    $header = "From:Plop <no-reply@plop.com>\n";
    $header .= "MIME-version: 1.0\n";
    $header .= "Content-type: text/html; charset= iso-8859-1\n";
    mail($email, $subject, $msg, $header);
    La page email.php est bien formatée et envoyée correctement

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

Discussions similaires

  1. Comment envoyer une page web par mail
    Par zgoulanda dans le forum Débuter
    Réponses: 3
    Dernier message: 02/10/2008, 09h30
  2. [Mail] ajouter d'envoyer une page par mail
    Par Piloupilou999 dans le forum Langage
    Réponses: 1
    Dernier message: 08/03/2007, 00h19
  3. [Mail] Envoyer une page html par mail
    Par Schlapp67 dans le forum Langage
    Réponses: 7
    Dernier message: 20/10/2006, 18h16
  4. [Mail] envoyer une page web par mail
    Par Zen_Fou dans le forum Langage
    Réponses: 8
    Dernier message: 06/04/2006, 17h06

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