Forum-webmaster
Technique - programmation => PHP / MySQL => Message commencé par: Balrog le le 16-06-2005 a 15:37:27

Titre: générer un mail en html avec du php?
Posté par: Balrog le le 16-06-2005 a 15:37:27

Salut,

j'ai un formulaire en ligne. Lorsqu'on l'envoie, il remplie la base de données et génére un email en html (pas du text simple)...

Je voudrai que ce que reçoit le destinataire dans sa boite ai la même présentation que les pages du site. Je copie donc dans le message le code de ma page. Seulement voila, mon sommaire et appeler (include) en php. J'ai donc un:
Citation:
Parse error: parse error, unexpected ';' in c:\documents and settings\balrog\mes documents\mes sites webs\vdn php\bellefosse\reservation.php on line 82


voici mon code. l'erreur est dans "$codehtml" au niveau des 2 includes:

Code:
//contenu mail
      $expediteur = "rando@randonnee-alsace.com";
      $objet = "A VOTRE SERVICE";
      $codehtml='<html>
               <head>
               <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
               <link href="http://www.randonnee-alsace.com/Bellefosse/format.css" rel="stylesheet" type="text/css">
               <title>Document sans titre</title>
               </head>
               
               <body>
               <div id="Layer1" class="fond">
                     'include ('http://www.randonnee-alsace.com/Bellefosse/som_haut.php').'
                  </div>
                  
                  <div id="Layer2" class="fond2">
                     '.include ('http://www.randonnee-alsace.com/Bellefosse/som_bas.php').'
                  </div>
                  
                  <div id="Layer4" class="presentation">
                     <br>
                     <p class="colgauche">Lorem ipsum dolor sit amet, consectetuer adipiscing elit.</p>
                     <br>
                     <img src="images/oberlain.gif" border="0" width="150" height="120" align="middle"><br><br>
                     <p class="colgauche">
                        <strong>Contact:</strong><br>
                        XXXXX<br>
                        XXXXXX<br>
                        XXXXX MUTZIG<br>
                        Tel: 11 22 33 44 55<br>
                        Email: XXXXX      
                     </p>
                  </div>
                  <div id="Layer3" class="corps">
                     <br><br>
                         <h3>Demande de réservation en ligne</h3>
                        <p>Nous avons bien re&ccedil;u votre demande de reservation !</p>
                        <p><a href="http://www.randonnee-alsace.com/resa/valid.php?id='.$data['id'].'" target="_blank">Veuillez cliquer ici afin de confirmer cette reservation</a></p>
                  </div>
               </body>
               </html>';
      $headers = "From: RANDONNEE ALSACE<".$expediteur.">\r\n";
      $headers .= "Cc:\r\n";
      $headers .= "Reply-To: ".$expediteur."\r\n";
      $headers .= "MIME-Version: 1.0\r\n";
      $headers .= "Content-Type: text/html; charset=iso-8859-1\r\n";
      $headers .= "X-Priority: 1\r\n";
      $headers .= "X-Mailer: PHP /".phpversion()."";
      mail($email,$objet,$codehtml,$headers);



merci de vos réponses

Titre: Re:générer un mail en html avec du php?
Posté par: waz le le 16-06-2005 a 15:51:52

Du php dans du hTML puis tu coupe la chaine avec ton ' avant le include , ..

Ton code est mal fait

Titre: Re:générer un mail en html avec du php?
Posté par: Balrog le le 16-06-2005 a 16:04:13

Merci, je vais essayé de suite.
Citation:
Ton code est mal fait

mouais... je tape du php depuis 3 mois. Seul dans son coin c'est pas toujours évident, alors forcément il y a des erreurs et des imperfections. Mais si tu as des suggestions je suis preneur...

Titre: Re:générer un mail en html avec du php?
Posté par: MFred le le 16-06-2005 a 17:37:58

Salut,

Erreur de syntaxe ici :

Code:
'include ('http://www.randonnee-alsace.com/Bellefosse/som_haut.php').'

Il manque un point après la première apostrophe, pour la concaténation.

Sinon waz, en quoi trouves-tu que le code est "mal fait" ?

Titre: Re:générer un mail en html avec du php?
Posté par: waz le le 16-06-2005 a 17:42:49

Je le trouve pas trés propre ... deusio .. il envoi un mail .... il peut pas include du php ds du html ...

Titre: Re:générer un mail en html avec du php?
Posté par: MFred le le 16-06-2005 a 19:05:35

Je le trouve pas trés propre
Euh y'a rien de vraiment incorrect dans ce code ...

il peut pas include du php ds du html
La fonction include ne sert pas uniquement à inclure du code PHP :)
http://fr3.php.net/manual/fr/function.include.php (http://fr3.php.net/manual/fr/function.include.php), Exemple 16-38. include() et return().

Titre: Re:générer un mail en html avec du php?
Posté par: waz le le 16-06-2005 a 19:14:03

INCLUDE EST UNE FONCTION PHP Et non HTML

Yann

Je m'enerve pas mais bon ... aller qu'il se debrouille ...

Titre: Re:générer un mail en html avec du php?
Posté par: MFred le le 16-06-2005 a 19:40:06

Citation de: waz le le 16-06-2005 a 19:14:03
Je m'enerve pas mais bon ...

En effet ca n'en vaut vraiment pas la peine. La fonction include est en effet une fonction php et non html (d'ailleurs, je ne connais aucune "fonction" html), et elle est utilisée comme telle dans son exemple. Tout ce que je dis, c'est que la fonction include peut retourner une chaine de caractère, et que dans ce cas précis, il est possible de procéder comme il l'a fait.

Si l'exemple de la doc ne te plait pas, j'ai testé ceci chez moi.

Fichier toinclude.php :

Code:
<?php
$var="test";
return $var;
?>


Fichier tester.php :

Code:
<?php
$montexte='Je fais un '.(include 'toinclude.php').' avec l\'include.';
echo $montexte;
?>


En appelant le fichier tester.php, il me renvoit bien : Je fais un test avec l'include.
Donc inutile de s'énerver, sa méthode semble correcte et fonctionne pourvu que les fichiers "inclus" renvoient une chaine de caractère via return() (du moins chez moi). Certes c'est pas courant, mais c'est correct.

Titre: Re:générer un mail en html avec du php?
Posté par: waz le le 16-06-2005 a 19:59:48

Je sais a quoi sert la fonction Include ...

Yann

Titre: Re:générer un mail en html avec du php?
Posté par: MFred le le 16-06-2005 a 20:41:09

Résolu par messagerie instantannée :).

Alors Balrog ca marche ? Sachant qu'il faut mettre des parenthèses autour de l'include, comme dans l'exemple que j'ai mis juste au-dessus, sinon ca renvoie une erreur de syntaxe.

PS : J'étais en train de penser à un truc ... Tu es bien conscient que le mail, une fois envoyé, ne changera pas même si tu modifies les fichiers inclus avant l'envoi hein ?

Titre: Re:générer un mail en html avec du php?
Posté par: Balrog le le 16-06-2005 a 22:24:20

post animé! >:( malheureusement pas uniquement par des réponses constructives... :(

Merci Bilbon ;D, malheureusement je n'arrive pas à faire ce que je veux :'(.

J'ai écrit dans mon code:

Code:
$somhaut = '<div id="Layer1" class="fond">'.(include 'http://www.randonnee-alsace.com/Bellefosse/som_haut.php').'</div>';


puis plus loin, à la bonne place, dans le code du mail à envoyer:

Code:
'.$somhaut.'


Dans cette exemple l'include est interprété, et affiché, mais pas du tout là où je l'attends. Cad, que le contenu de "l'include" ne saffiche pas dans le mail, mais dans la page qui se recharge après que le formulaire est été envoyé (c'est l'envoie du formulaire qui génère la mail)

Mais je n'ai pas compris quoi faire avec ceci:
Citation:
Fichier toinclude.php :
Code:
<?php
$var="test";
return $var;
?>


j'ai aussi quelques difficultés avec les principes de concaténation ainsi qu'avec les ' et "...

bref, j'ai l'impression de pédaler dans la choucroute!

Titre: Re:générer un mail en html avec du php?
Posté par: MFred le le 17-06-2005 a 01:18:18

(Arg j'ai effacé tout mon post par mauvaise manip' :( Je recommence.)

Pour l'include, il faut que tu fasses la différence entre 3 situations.
  • Si le fichier "inclus" n'a pas l'extension .php, ou ne comporte pas de code php, la fonction include va lire l'ensemble du fichier, et le balancer sur le flux de sortie (à la manière d'un écho, print, print_r ...). Si il n'y a pas eu de problème, la fonction renvoie 1 (cette valeur de retour est utile dans le cas ou tu mets en place une gestion des erreurs).
  • Si le fichier "inclus" contient du code php et a l'extension .php, alors la fonction include va lire le code et l'interpréter de la page où elle est appelée. Si il n'y a pas de problème, elle renvoie 1.
  • Enfin, le dernier cas, vraiment peu fréquent et peu connu (à vrai dire je ne l'ai jamais vu utilisé autre part que dans la doc). Si le fichier "inclus" renvoie une donnée quelconque via la fonction return(), alors la fonction include va renvoyer cette donnée.


  • En fait, tu vois que seule la dernière possibilité te convient, puisque tu désires obtenir le contenu du fichier, et que seule la valeur de retour est (simplement) récupérable. Mais cela impliquerait d'adapter tes fichiers inclus, et je suppose que tu t'en sers déjà ailleurs dans ton site. Heureusement, il existe des fonctions bien plus adaptées à la lecture d'un fichier, regarde par ici : http://www.phpdebutant.org/article58.php (premier exemple).

    Ce que cet épisode va te permettre d'intégrer, je l'espère :), c'est qu'il y a une différence entre ce que fais une fonction et la valeur qu'elle retourne.
    Par la suite, tu verras qu'il est possible de créer tes propres fonctions : ainsi une fonction peut envoyer un cookie, executer une requete mysql, modifier un fichier texte, et renvoyer la chaine de caractère "Vive PHP !" :P

    PS : Je te conseile vraiment de n'utiliser que les ' ' et la concaténation pour déléimiter tes chaines de caractères, c'est plus rigoureux, plus performant, et pas besoin de s'embeter à échapper les guillemets autour des attributs des balises HTML.

    En espérant que tu y verras plus clair :)

Titre: Re:générer un mail en html avec du php?
Posté par: Balrog le le 17-06-2005 a 10:45:41

Ah ben ça c'est une réponse! merci

Bon, situons le personnage (moi donc). je débute, je ne connais que les fonctions de base et encore, il y a donc dans tes explications des points d'une obsurité mordoresque...

La fonction return d'abord. Je ne l'ai pas encore abordé... mais je vais, dès que j'aurais le temps.

Sinon j'ai essayé le truc de phpdébutant, et ça marche. ;D sauf que ça affiche que la première ligne du fichier en question. il faut que je trouve le bon chiffre en lieu et place de 255.

Je ne peux y consacrer plus de temps aujourd'hui, mais je vais m'y plonger dès que possible. Avec le boulot, ça ne me laisse pas toujours autant de temps que je voudrais :P

Titre: Re:générer un mail en html avec du php?
Posté par: Vision-storm le le 02-03-2006 a 22:55:35

Pour moi l'envoi d'email doit etre rapidemant fait si tu cherche un code qui te permet d'envoyer un email tu à ca :


Code:
<? //ON RECUPERE LES INFOS A METTRE DANS LE MAIL
$confirme="N hésitez pas";
$mailexp = "xxx@xxxx.com"; // entrez ici votre email qui sera l'expéditeur des recommandations
$mailcopie = "xxxx@xxxxx.com"; // entre ici l'email où sera envoyé une copie de la racommandation
$siteweb = "http://www.xxxxxx.com"; // entrez ici l'url complète de votre site web avec http://

$objet = $HTTP_POST_VARS['objet']; // on récupére l'objet du mail
$commentaire = $HTTP_POST_VARS['commentaire']; // on récupére le commentaire du mail
$nommailling = $HTTP_POST_VARS['nommailling']; // on récupére l'emeteur du mail

if ($commentaire<>""){ // condition ok on envoie une copie de sauvegarde au webmaster   
Mail("$mailcopie","TITRE","Mailling de $nommailling\nContenant le corps suivant : $commentaire","from: $mailexp");

Mail("$mail[email]","$objet","$commentaire\n\nStaff de $siteweb\n\nA bientôt !\n\nPS: merci de ne pas répondre à ce courrier.","from: $mailexp"); }
$confirme="Mail envoyé";

?>

<form action="" method="post" name="invitation" class="lientext">
<? echo "<span class=titrerouge>$confirme</span>"; ?><br>
Votre Login : <br>
<input name="nommailling" type="text" id="nommailling" size="20" >
<br>
Objet : <br>
<input name="objet" type="text" id="objet" size="20" >
<br>
Le m&eacute;ssage :<br>
<textarea name="commentaire" id="commentaire"></textarea>
<br>
<br>
<input type="submit" name="reco" value="Mailling">
<br></span>

</form>


en esperant ne pas avoir glissé de coquille dans le code lol sinon dit le je corrige.

Titre: Re:générer un mail en html avec du php?
Posté par: Vision-storm le le 04-03-2006 a 12:47:26

Bon ta question ma motivé à mettre ca au propre donc regarde et si cela peu t'aide j'en suis ravi :
http://www.bibliotheque-des-esprits.com/cours/php/php_formulaire_contact.html


Forum-webmaster | Actionné par YaBB SE
© 2001-2003, YaBB SE Dev Team. Tous droits réservés.