|
|
|
|
Retour à la ligne formulaire PHP mail
Dernière réponse le 19 jan 2009 à 14:22:25 Mysterious_fea, le 11 nov 2007 à 17:59:32Bonjour,
Je sais que c'est question a souvent été posée mais bon...
Je veux retranscrire les retours à la ligne dans mon form php en envoi mail
J'ai essayé streplace de \r\n en <br> mais comme j'ai désactivé les htmlspecialchars, ça ne marche pas : dans le mail d'arrivée apparaît "Blabla& <br> Blabla <br> Guy" (sachant que j'ai mis les balises <html></html> pour coder mon message final.
J'ai aussi essayé le truc genre nb...($message) mais ça marche pas non plus
Que faire ?
Merci
Configuration: Windows Vista Firefox 2.0.0.9
Salut,
htmlspecialchars(nl2br($message)) |
Quoi ?
$objet='.::Nouvelle question - Consultations en ligne::.';
$headers='From:'.$votremail."\r\n".'To:'.$mail."\r\n".'Subject:'.$objet."\r\n".'Content-type:text/html;charset=fr-ascii\r\n'.'MIME-Version: 1.0\r\n'.'Sent:'.date('l, F d, Y H:i');
$messagefinal="<html>Bonjour !<br>Vous avez reçu un mail envoyé pour les consultations en ligne.<br>Les champs contenant un tiret n'ont pas été remplis.<br>Vérifiez que les informations (nom et adresse e-mail) correspondent bien à celles indiquées sur le récapitulatif du paiement PayPal. Si c'est le cas, vous pouvez répondre au client en cliquant sur le bouton 'Répondre'.<br><br>>><strong>Nom :</strong> $nom<br>>><strong>Adresse e-mail :</strong> $votremail<br>>><strong>Adresse postale :</strong> $adresse - $code $ville<br>>><strong>Téléphone(s) :</strong> $tel - $tel2<br><br>>><strong>Question :</strong><br>$message</html>";
if(mail($destinataire,$objet,$messagefinal,$headers))
$message récupère le contenu de la textarea message. Il est intégré au $messagefinal, qui est envoyé par mail. les autres variables récupèrent le nom, le mail, l'adresse, ... Une autre partie du code : $message=preg_replace('#(<|>)#', '-', $_POST['message']);
$message=str_replace('"', "'",$message);
$message=str_replace('&', 'et',$message);
$message=str_replace('é', 'é',$message);
$message=str_replace('è', 'è',$message);
$message=str_replace("\n","<br>", $message);
$nom=preg_replace('#(<|>)#', '-', $_POST['nom']);
$nom=str_replace('"', "'",$nom);
$nom=str_replace('&', 'et',$nom);
$adresse=preg_replace('#(<|>)#', '-', $_POST['adresse']);
$adresse=str_replace('"', "'",$adresse);
$adresse=str_replace('&', 'et',$adresse);
$ville=preg_replace('#(<|>)#', '-', $_POST['ville']);
$ville=str_replace('"', "'",$ville);
$ville=str_replace('&', 'et',$ville);
// On assigne et/ou protège nos variables
$votremail=stripslashes(htmlentities($_POST['votremail']));
$message=stripslashes(htmlspecialchars($message));
$nom=stripslashes(htmlspecialchars($nom));
$adresse=stripslashes(htmlspecialchars($adresse));
$code=stripslashes(htmlspecialchars($code));
$ville=stripslashes(htmlspecialchars($ville));
$tel=stripslashes(htmlspecialchars($tel));
$tel2=stripslashes(htmlspecialchars($tel2));
//input envoi
$envoi=htmlentities($_POST['envoi']);
//on enlève les espaces
$votremail=trim($votremail);
$message=trim($message);
$nom=trim($nom);
$adresse=trim($adresse);
$code=trim($code);
$ville=trim($ville);
$tel=trim($tel);
$pot=trim($pot);
Voilà Merci |
La fonction nl2br traduit bien les \r\n en <br>, mais ça compte comme si l'internaute avait tapé <br>. Or, l'insetion de balises html est désactivés par htmlspecialchars (j'ai gardé le modèle du formulaire foruni sur CCM dans les trucs & astuces)
|
Est ce que tu as essayé de recevoir tes mails sur une autre messagerie ?
|
Exemple ce code qui selon moi est inutile :
$nom=preg_replace('#(<|>)#', '-', $_POST['nom']);
$nom=str_replace('"', "'",$nom);
$nom=str_replace('&', 'et',$nom);
Le 1er remplace les chevrons par un tiré Le 2ème remplace les double cote par un simple cote Le 3ème remplace & par son entité html Alors la fonction htmlspecialchars() ferait l'affaire : http://fr.php.net/htmlspecialchars Les remplacements effectués sont :
* "&" (et commercial) devient "& amp;"(sans l'espace)
* """ (guillemets doubles) devient "& quot;" (sans l'espace) lorsque ENT_NOQUOTES n'est pas utilisée.
* "'" (single quote) devient "& #039;" (sans l'espace) uniquement lorsque ENT_QUOTES est utilisée.
* "<" (inférieur à) devient "& lt;"(sans l'espace)
* ">" (supérieur à) devient "& gt;"(sans l'espace)
En bref t peux te limiter à ça : $message=trim(stripslashes(nl2br(htmlspecialchars($message)))); |

