Aller au contenu

Page en UTF-8 en fonction mail PHP


Sujets conseillés

Posté

Je me suis converti depuis peu au charset en utf-8 que je trouve plus pratique dans mes pages.

Je me heurte aujourd'hui à un problème sur les caractères accentués qui sont en hiéroglyphes dans le contenu des mails envoyés avec la fonction mail de PHP (ex : Céline Dupond).

Comment pallier à ce problème ?

Merci :)

Posté

Converti en iso 8859-1, pas mal de clients de messagerie gèrent mal l'utf-8, c'est le cas d'outlook notamment, ainsi que pas mal de webmail.

Moi aussi, au départ quand j'ai découvert l'utf-8 j'ai voulu envoyer mes mails dans ce format, et j'ai eu quelques surprises.

Posté

Salut,

La fonction utf8_encode() est ton amie ;)

Si le corps de ton mail est dans une variable $body_mail, il te suffit de faire un utf8_encode($body_mail) et le tour est joue.

Posté

Salut,

Je pense que la fonction utf8_decode serait la mieux appropriée mais ce n'est pas le cas. J'ai tout de même testé le utf8_encode mais ça ne fait qu'empirer les choses :unsure:

Tu pensais à une autre possibilité Dadou ?

Posté

utf8_decode est en effet la fonction à utiliser, mais encore faut il que le mail généré soit déclaré en iso 8859-1 dans ses entêtes

Posté

Autant pour moi, en effet utf8_decode pour la fonction.

Comme le dis Dadou, les headers du mail doivent etre en iso 8859-1

Posté (modifié)

Il me semble que tout est bon mais pourtant... Peut être ai je le nez trop collé à mon écran ?!

$sujet='Demande de contact depuis votre site';
$headers = 'From: contact_AT_site.fr' . "\r\n";
$headers .= 'Reply-To: ' .$email. "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
$message="
Civilite : ".$civ."<br />
Nom : ".$nom."<br />
Message : ".nl2br($commentaire);
mail(_EXP_MAIL_, $sujet, $message, $headers);

Merci pour votre aide

Modifié par dldstyle
Posté

Essaie comme ça :

$sujet='Demande de contact depuis votre site';
$headers = 'From: contact_AT_site.fr' . "\r\n";
$headers .= 'Reply-To: ' .$email. "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
$message="
Civilite : ".utf8-decode($civ)."<br />
Nom : ".utf8-decode($nom)."<br />
Message : ".nl2br(utf8-decode($commentaire));
mail(_EXP_MAIL_, $sujet, $message, $headers);

Posté

Merci de ton aide Dadou mais ça ne marche pas mieux (j'ai remplacé dans ton code utf8-decode par utf8_decode)... :(

Posté

Après avoir trituré le code j'ai réussi à le faire fonctionner. Je pense que l'ordre du charset dans le header à son importance.

Le code si cela peut aider d'autres personnes pour envoyer des emails avec la fonction mail de PHP depuis une page en UTF-8 :

		 $sujet='Demande de contact depuis votre site';
$headers = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
$headers .= 'From: '._EXP_MAIL_. "\r\n";
$headers .= 'Reply-To: ' .$email. "\r\n";
$headers .= 'Reply-To: ' .$email. "\r\n";

$message="
Civilite : ".$civ."

Nom : ".utf8_decode($nom)."

Tel. : ".$telephone."

Email : ".$email."

Ville : ".utf8_decode($ville)."

Message : ".nl2br(utf8_decode($commentaire));
mail(_EXP_MAIL_, $sujet, $message, $headers);

Merci pour l'aide.

  • 3 months later...
  • 2 semaines plus tard...
Posté

Pour ma part, je laisse tout en utf-8 et j'envois un email codé en utf-8 également sans url_decode...

regarde ton header:

$headers .= 'Content-type: text/plain; charset=utf-8' ."\n";

Veuillez vous connecter pour commenter

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



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