bonjour,
j'ai fait une petite page "text.php" pour tester la fonction mail(); de php.
problème :
si je met comme nom d' expéditeur le mot "Mon Nom éèà" (avec accents)
à la réception du message le nom de l'expéditeur reçu est "Mon Nom éèà Ã".
il y a donc un problème d'encodage uniquement sur le nom de l'expéditeur car dans l'objet et le corps du message les caractères accentués sont bien reçus.
mon code :

<!DOCTYPE html> 
<html lang="fr"> 
<head> 
	<meta charset="UTF-8">
</head>
<body>
TEST


<?php
	$nom = 'Mon Nom éèà'; /* avec accents */
	$expediteur = 'expediteur@gmail.com'; 
	$objet = 'Mon Objet éèà'; /* avec accents */
	$message = 'Mon message éèà'; /* avec accents */
	
	/* Destinataire */
	$to = 'webmaster@monsite.com';
	
	/* Construction du message */
	$msg  = 'Bonjour,'."\r\n\r\n";
	$msg .= 'Ce mail a été envoyé depuis monsite.com par '.$nom."\r\n\r\n";
	$msg .= 'Voici le message qui vous est adressé :'."\r\n\r\n";
	$msg .= '***************************'."\r\n\r\n";
	$msg .= $message."\r\n\r\n";
	$msg .= '***************************'."\r\n";
 
	/* En-têtes de l'e-mail */
	$headers = "Content-type: text/plain; charset=utf-8\r\n";
	$headers .= 'From: '.$nom.' <'.$expediteur.'>'."\r\n\r\n";
 
	/* Envoi de l'e-mail */
	mail ($to, $objet, $msg, $headers);
?>


</body>

Modifié par AlaiM (07 Nov 2024 - 21:03)
Pour résoudre ce problème, vous devez spécifier un encodage pour le nom de l'expéditeur dans l'en-tête de l'email. Vous pouvez utiliser la fonction mb_encode_mimeheader() pour encoder correctement les caractères spéciaux dans les en-têtes de l'email.

Voici une version modifiée de votre code qui devrait résoudre le problème :
<!DOCTYPE html>  
<html lang="fr">  
<head>  
	<meta charset="UTF-8"> 
</head> 
<body> 
TEST 
 
<?php 
	$nom = 'Mon Nom éèà'; /* avec accents */ 
	$expediteur = 'expediteur@gmail.com';  
	$objet = 'Mon Objet éèà'; /* avec accents */ 
	$message = 'Mon message éèà'; /* avec accents */ 
	 
	/* Destinataire */ 
	$to = 'webmaster@monsite.com'; 
	 
	/* Construction du message */ 
	$msg  = 'Bonjour,'."\r\n\r\n"; 
	$msg .= 'Ce mail a été envoyé depuis monsite.com par '.$nom."\r\n\r\n"; 
	$msg .= 'Voici le message qui vous est adressé :'."\r\n\r\n"; 
	$msg .= '***************************'."\r\n\r\n"; 
	$msg .= $message."\r\n\r\n"; 
	$msg .= '***************************'."\r\n"; 
  
	/* En-têtes de l'e-mail */ 
	$headers = "Content-type: text/plain; charset=utf-8\r\n"; 

	// Encodage correct du nom de l'expéditeur
	$encoded_nom = mb_encode_mimeheader($nom, "UTF-8", "Q");

	$headers .= 'From: '.$encoded_nom.' <'.$expediteur.'>'."\r\n\r\n"; 
  
	/* Envoi de l'e-mail */ 
	mail ($to, $objet, $msg, $headers); 
?> 
 
</body>
</html>

Modifié par Tony Monast (26 Nov 2024 - 15:37)