Aller au contenu

Inclure du HTML dans du PHP


ZeDevil

Sujets conseillés

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.

Lien vers le commentaire
Partager sur d’autres 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

Lien vers le commentaire
Partager sur d’autres 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.....

Lien vers le commentaire
Partager sur d’autres 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

Lien vers le commentaire
Partager sur d’autres 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

Lien vers le commentaire
Partager sur d’autres 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>";

Lien vers le commentaire
Partager sur d’autres 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)

Modifié par genmin
Lien vers le commentaire
Partager sur d’autres 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....

Lien vers le commentaire
Partager sur d’autres 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 ???

Lien vers le commentaire
Partager sur d’autres 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 ?

Lien vers le commentaire
Partager sur d’autres 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

Lien vers le commentaire
Partager sur d’autres 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

Modifié par ZeDevil
Lien vers le commentaire
Partager sur d’autres 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:

Lien vers le commentaire
Partager sur d’autres 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\"";

Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

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



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