8792 sujets

Développement web côté serveur, CMS

Bonsoir,
Je débute en PHP et j'ai un problème de caractères à la reception de mails
générés dynamiquement:

1 - le formulaire d'envoi :


	<form method="post" onsubmit="return valider()" action="formmail_achat.php">
		<input name="Objet" type="hidden" value="ACHAT: <? echo $_REQUEST['reference'];?>" />
		<div>
			<label for="nom">Votre nom<span class="esp_cadratin">:</span> *</label>
			<br />
			<input name="Nom" type="text" class="champs" id="nom" size="23" maxlength="25" />
		</div>
		<div>
			<label for="prenom">Votre pr&eacute;nom<span class="esp_cadratin">:</span> *</label>
			<br />
			<input name="Prénom" type="text" class="champs" id="prenom" size="23" maxlength="25" />
		</div>
		<div>
			<label for="telephone">T&eacute;l.<span class="esp_cadratin">:</span> </label>
			<br />
			<input name="Tél." type="text" class="champs" id="telephone" size="18" maxlength="16" />
		</div>
		<div>
			<label for="mailcontact">Courriel<span class="esp_cadratin">:</span> * <br />
			</label>
			<input name="E-mail" type="text" class="champs" id="email" size="25" maxlength="40" />
		</div>
		<div style="margin-top: 10px; margin-bottom: -20px">
			<label for="texte">Votre message<span class="esp_cadratin">:</span> </label>
		</div>
		<div style="height: 100px">
			<textarea name="Message" id="texte" rows="8" cols="20" class="champs">
</textarea>
		</div>
		<div id="btns">
			<input value="Envoyer" name="envoi" id="envoi" type="submit" />
			<input value="Effacer" name="reset" id="reset" type="reset" />
		</div>
	</form>



2 - La page de récupération des donnée et de génération du mail

<?php
$TO = "test@free.fr";
$h  = "From: " . $TO;
$message = "";
while (list($key, $val) = each($HTTP_POST_VARS)) {
  $message .= "$key : $val\n";
}
mail($TO, $Objet, $message, $h);
Header("Location: merci_achat.php");
?>


Et enfin la mail tel qu'il apparait dans mon client mail.

Objet : Achat:AUDEMARS PIGUET â?oRoyal Oakâ?? pour homme
Nom : sdhfhg
Prénom : sdth
Tél_ : 
E-mail : test@free.fr
Message : 
envoi : Envoyer



Ensuite je n'arrive pas à enlever la mention envoi : Envoyer du mail
car il prends tous les input.

Merci par avance de votre aide.
Le script PHP qui envoie le mail est probablement encodé en UTF-8, or le client mail le lit en ISO-8859-1 (normal, puisque tu ne précise pas d'encodage dans le mail).

Tu as deux solutions :

- Préciser un encodage UTF-8 dans le mail avec l'en-tête "Content-Type: text/plain;charset=utf-8" mais cela pose des problèmes avec certains clients qui ne suivent pas la RFC en ce qui concerne l'encodage du sujet du message;

- Encoder le contenu et le sujet ton mail en ISO-8859-1 avant de l'envoyer avec la fonction utf8_decode(). Attention : le signe euro ne passera pas, si tu veux l'avoir il faudra créer une fonction qui s'en occupera.
Salut,
Ok super merci pour toutes ces infos!
En fait le client mail que j'utilise est mis sur l'ISO-8859-1 comme tu l'indique
mais j'ai vu qu'on pouvais le changer dans le menu affichage.

Par contre j'ai un nouveau probleme, (les guillements dans un titre généré en PHP) ne s'affiche plus correctement en ISO-8859-1 alors qu'ils s'affichent bien avec ce charset quand il sont ecris en dur en html.