8768 sujets

Développement web côté serveur, CMS

Bonjour à tous,

je me permets de revenir vers vous après 2h de tests multiple suite à des soucis d'encodage lors de la repection d'un email via le formulaire.

Du coup, j'ai réutiliser des tutos pour voir si c'était bien mon code qui déconnait ou pas.


$name = trim($_POST['name']);
$email = trim($_POST['email']);
$tel = trim($_POST['telephone']);
$message = trim($_POST['message']);

$EmailAdmin = 'monemail@email.fr';

if (!preg_match("#^[a-z0-9._-]+@(hotmail|live|msn).[a-z]{2,4}$#", $EmailAdmin))
{
	$passage_ligne = "\r\n";
}
else
{
	$passage_ligne = "\n";
}

//=====Déclaration des messages au format texte et au format HTML.
$message_html = "<html><head></head><body>";
$message_html.= "Nom : " . htmlspecialchars($name) . $passage_ligne;
$message_html.= "Email : " . htmlspecialchars($email) . $passage_ligne;
$message_html.= "Telephone : " . htmlspecialchars($tel) . $passage_ligne;
$message_html.= "Message : " . $passage_ligne . htmlspecialchars($message) . $passage_ligne;
$message_html.= "</body></html>";
//==========
 
//=====Création de la boundary
$boundary = "-----=".md5(rand());
//==========
 
//=====Définition du sujet.
$sujet = "Hey !";
//=========


//=====Création du header de l'e-mail.
$header  = "From: " . $name . "<" . $email . ">" . "\r\n" . "To: " . $EmailAdmin . $passage_ligne;
$header .= "Reply-to: " . $name . "<" . $email . ">" . "\r\n" . "To: " . $EmailAdmin . $passage_ligne;
$header .= "MIME-Version: 1.0" . $passage_ligne;
$header .= "Content-Type: multipart/alternative;" . $passage_ligne . " boundary=\"$boundary\"" . $passage_ligne;
//==========
 
//=====Ajout du message au format HTML
$messageT.= "Content-Type: text/html; charset=\"ISO-8859-1\"".$passage_ligne;
$messageT.= "Content-Transfer-Encoding: 8bit".$passage_ligne;
$messageT.= $passage_ligne.$message_html.$passage_ligne;
//==========
$messageT.= $passage_ligne."--".$boundary."--".$passage_ligne;
//==========
 
//=====Envoi de l'e-mail.
mail($EmailAdmin,$sujet,$messageT,$header);
//==========



et voici le resultat :


To: monemail@email.fr

Reply-to: tessst<toto@toto.lu>

To: monemail@email.fr

MIME-Version: 1.0

Content-Type: multipart/alternative;

 boundary="-----=b77dda4d6797669a3875c42e1f576955"
Message-Id: <20160607124354.77638E07C@web1.cbcvo.local>
Date: Tue,  7 Jun 2016 14:43:54 +0200 (CEST)

Content-Type: text/html; charset="ISO-8859-1"

Content-Transfer-Encoding: 8bit


<html><head></head><body>Nom : tessst

Email : toto@toto.lu

Telephone : 4006301

Message : 

feafe af llllllllllllllllllll

</body></html>

-------=b77dda4d6797669a3875c42e1f576955--


Modifié par gringo (07 Jun 2016 - 16:14)
Bonjour,

Tu peux essayer en remplaçant les \n et \r\n avant ton envoie de mail avec la fonction : nl2br


// transformation des \n et \r\n en <br>
// a mettre après la création de ton message
$message_html = nl2br($message_html);