Jump to content
Sign in to follow this  
ZeDevil

Inclure du HTML dans du PHP

Rate this topic

Recommended Posts

Bonjour,

J'ai un formulaire qui permet d'envoyer sur un mail des informations precedemment rentré dans celui ci. Mais ca arrive sur le mail en texte.

Je voudrai afficher un mail en html, mais ne sais comment l'inclure dans le php. J'ai deja essayer mais sans succès.

Je vous donne l'exemple du corps de texte:

$corps.="Nom : ".$f_1."\n";

$f_1 est la fonction du nom rentré dans le formulaire.

Share this post


Link to post
Share on other sites

Je n'ai pas tout compris, le code que tu donne fonctionne très bien me semble t'il. Que cherche tu exactement à afficher en html ?

Share this post


Link to post
Share on other sites

Salut ZeDevil,

Il faut ajouter des entêtes spécifiques si tu veux que le mail soit au format html.

$headers .= "MIME-Version: 1.0\r\n";
$headers .= "Content-Type: text/html; charset=ISO-8859-1\r\n";

Dan

Share this post


Link to post
Share on other sites

Alors j'essai de mieux m'expliquer...

J'ai un formulaire qui envoie les données rentrées par l'utilisateur sur un mail.

Le contenu du mail est un simple texte alors que je voudrai faire une mise en page en html.

Il me faut donc inclure du html dans les réponse afin par exemple de mettre une couleur de font ainsi que de faire un tableau pour ordonner les données.

Et je ne sais comment faire.....

Share this post


Link to post
Share on other sites

Donc comme la fait remarquer Dan il faut pas oublier les 2 ligne dans l'entete et après tu inserre ton code html dans ta variable $corps

Share this post


Link to post
Share on other sites

Ok Dan pour les $headers.

je les ai placé tout en haut du script php, mais ou es ce que j'y fait appel, car je pense qu'il faut les afficher les '$headers' ou y faire appel.....ou alors je les laisse juste comme ca ?

Je voulais également savoir comment je fais pour inclure du html dans la partie php afin de mettre mon texte dans des tableaux.

Par exemple dans cette phrase:

$corps.="Nom : ".$f_1."\n";

Qui donne en version texte dans le mail:

Nom : ZeDevil

Share this post


Link to post
Share on other sites

En fait c'est dans mail() qu'apparaissent les headers:

mail ( string to , string subject , string message , string additional_headers) ;

String to : l'adresse ou tu envoi.

string subject: le sujet.

string message: le message.

Additional headers: ton headers.

Les headers te permettent aussi de definir l'adresse de reponse en cas d'erreur d'envoi, ou de mail recu etc.

Pour les headers ce tuto est bien fais :

http://www.phpguide.net/visituto.php3?numtut=165

Share this post


Link to post
Share on other sites

Ce que je ne comprend pas, c'est que mon code html ce met dans les couleur du PHP, et non comme marqué dans la page du lien....cad, tout en rouge...

Donc il me prend mon html comme du php, alors que j'ai bien mis comme c'était marqué !!!

Ai-je oublié quelque chose ???

voilà une partie de ce que j'ai fait:

// corps en html

$corps_html.="<html><head><style type="text/css">

<!--

.minititre {

font-family: Georgia, "Times New Roman", serif, sans-serif;

font-size: 12px;

text-transform: uppercase;

color: #666699;

font-weight: bold;

}

-->

</style></head>

<body bgcolor="#999999">

<table width="100%" height="100%" border="0">

<tr>

<td align="center" valign="top">

<table width="600" border="0" cellspacing="0" cellpadding="0">

<tr>

<td align="center" valign="middle" bgcolor="#FFFFFF"><table width="596" border="0" cellpadding="0" cellspacing="10" bgcolor="#CCCCCC">

<tr>

<td colspan="2" class="minititre"><img src="../img/spacer.gif" width="1" height="10"></td>

</tr>

<tr>

<td colspan="2" align="center" class="minititre">Bonjour</td>

</tr>";

$corps_html.="<tr>

<td colspan="2">"Nom : ".$f_1."\n"</td>

</tr>";

Share this post


Link to post
Share on other sites

ca vien du fait que tu referme les " dans ton code html, il faut que tu précide que c'est un caractère spécial avec \ voilà ce que ca donne

<?php
// corps en html
$corps_html.="<html><head><style type=\"text/css\">
<!--
.minititre {

font-family: Georgia, \"Times New Roman\", serif, sans-serif;
font-size: 12px;
text-transform: uppercase;
color: #666699;
font-weight: bold;
}
-->
</style></head>
<body bgcolor=\"#999999\">
<table width=\"100%\" height=\"100%\" border=\"0\">
<tr>
<td align=\"center\" valign=\"top\">
<table width=\"600\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\">
<tr>
<td align=\"center\" valign=\"middle\" bgcolor=\"#FFFFFF\"><table width=\"596\" border=\"0\" cellpadding=\"0\" cellspacing=\"10\" bgcolor=\"#CCCCCC\">
<tr>
<td colspan=\"2\" class=\"minititre\"><img src=\"../img/spacer.gif\" width=\"1\" height=\"10\"></td>
</tr>
<tr>
<td colspan=\"2\" align=\"center\" class=\"minititre\">Bonjour</td>
</tr>\";
$corps_html.=\"<tr>
<td colspan=\"2\">\"Nom : \".$f_1.\"\n\"</td>
</tr>";
?>

B)

Edited by genmin

Share this post


Link to post
Share on other sites

Ouais ok, donc il faut que je mette des \ a chaque fois qu'il y a des "

Je te remercie beaucoup.....je te tiens au courant si tout fonctionne bien des que j'ai fini....

Share this post


Link to post
Share on other sites

Bon alors ca marche bien enfin avec quelques petits problemes qd meme...

Bon alors deja, le CSS ne s'applique pas......je pense qu'il doit yu avoir une erreur de script avec les " présent au debut mais pas a la fin:

$corps_html.="<html><head><style type=\"text/css\">

<!--

.minititre {

font-family: Georgia, \"Times New Roman\", serif, sans-serif;

font-size: 12px;

text-transform: uppercase;

color: #666699;

font-weight: bold;

}

-->

</style></head>

Apres par contre, le mail s'affiche tres sur hotmail, mais j'ai testé sous outlook express et ca me met le texte brut et apres tout le code html, mais ca n'en choisi pas un des 2, et le html ne s'affiche pas.....

Alors je ne comprend pas pourquoi il me met le code html dans le mail....

Share this post


Link to post
Share on other sites

Déjà je viens de voir que j'ai fait une erreur sur le script que je t'ai donné avec le \ avant le " :unsure:

</tr>\";
$corps_html.=\"<tr>
<td colspan=\"2\">\"Nom : \".$f_1.\"\n\"</td>
</tr>";
?>

devrait devenir

</tr>";
$corps_html.="<tr>
<td colspan=\"2\">\"Nom : ".$f_1."\n\"</td>
</tr>";
?>

mille excuse. Sinon pour ce qui est de ton style je ne vois pas trop pourquoi il ne s'applique pas.

Pour ce qui est de outlook ca ne pourrai pas venir d'une option à régler correctement ???

Share this post


Link to post
Share on other sites

Si Outlook te renvoie le code html comme du texte, c'est parce que la balise header n'est pas correctement orthographée. Tu peux nous mettre le contenu de cette balise ?

Share this post


Link to post
Share on other sites
Déjà je viens de voir que j'ai fait une erreur sur le script que je t'ai donné avec le \ avant le "  :unsure:

</tr>\";
$corps_html.=\"<tr>
<td colspan=\"2\">\"Nom : \".$f_1.\"\n\"</td>
</tr>";
?>

devrait devenir

</tr>";
$corps_html.="<tr>
<td colspan=\"2\">\"Nom : ".$f_1."\n\"</td>
</tr>";
?>

mille excuse. Sinon pour ce qui est de ton style je ne vois pas trop pourquoi il ne s'applique pas.

Pour ce qui est de outlook ca ne pourrai pas venir d'une option à régler correctement ???

<{POST_SNAPBACK}>

Merci de le dire, mais j'avais fait la correction, n'étant pas si nul en php...... :D

Share this post


Link to post
Share on other sites
Si Outlook te renvoie le code html comme du texte, c'est parce que la balise header n'est pas correctement orthographée. Tu peux nous mettre le contenu de cette balise ?

<{POST_SNAPBACK}>

Pas de prob la voici:

$tete="From:".$f_6."\n";

$tete.= "MIME-Version: 1.0\n";

$tete.= "Content-Type: multipart/alternative; boundary=\"$boundary\"";

$tete2="From:monmail_AT_chezmoi.net\n";

$tete2.= "MIME-Version: 1.0\n";

$tete2.= "Content-Type: multipart/alternative; boundary=\"$boundary\"";

J'envoie à 2 mail différent...c'est pour ca le tete2

et en dessous pour l'envoie:

mail("monmail_AT_chezmoi.net", $titre, stripslashes($corps), $tete

mail("$f_6", $titre, stripslashes($corps), $tete2

Edited by ZeDevil

Share this post


Link to post
Share on other sites

pourquoi ne pas avoir utilisé le code donné par Dan un peu plus haut ??

$headers .= "Content-Type: text/html; charset=ISO-8859-1\r\n";

Share this post


Link to post
Share on other sites

Juste parcequ'il était marqué dans le lien de furious Gontran au cas ou les personnes ne voulant pas voir en html peuvent le faire en texte brut....

Share this post


Link to post
Share on other sites

En effet ca parais interressant, cependant je vien de jetter sur ce lien et notament au code pour le cas d'email au format html ou txt. Comme je ne suis pas un expert non plus je ne pige pas trop car au final tu te retrouve bien avec les format (txt et html) dans le message ????? et je ne vois vraiment pas à quoi sert la variable $boundary

Ca deviens plus compliquer que ce que je pensai tout ca :P:unsure:

Share this post


Link to post
Share on other sites

Il te faut un espace entre les 2 pts des entetes, et leur valeur :

FROM:<espace>moi_AT_ici.com

Share this post


Link to post
Share on other sites

Mets le type Mime avant le From pour les 2 cas.

Share this post


Link to post
Share on other sites

Bah c'est deja fait non ???

$tete="From: ".$f_6."\n";

$tete.= "MIME-Version: 1.0\n";

$tete.= "Content-Type: multipart/alternative; boundary=\"$boundary\"";

$tete2="From: moi_AT_ici.net\n";

$tete2.= "MIME-Version: 1.0\n";

$tete2.= "Content-Type: multipart/alternative; boundary=\"$boundary\"";

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×
×
  • Create New...