Aller au contenu

Inclure du HTML dans du PHP


Sujets conseillés

Posté

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.

Posté

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 ?

Posté

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

Posté

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.....

Posté

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

Posté

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

Posté

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

Posté

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>";

Posté (modifié)

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)

Modifié par genmin
Posté

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....

Posté

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....

Posté

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é

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é
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

Posté (modifié)
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

Modifié par ZeDevil
Posté

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";

Posté

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....

Posté

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:

Posté

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

FROM:<espace>moi_AT_ici.com

Posté

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\"";

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...